<?php
require_once("cResultado.php");
require_once("cErrorCode.php");
require_once("cAlias.php");

require_once("PHPLogger.php");
$LOGGER = new PHPLogger(LOGGER_PATH, LOGGER_LEVEL);
//$LOGGER = new PHPLogger("c:\\temp\\", 5);
class cConfiguracion{
	function getResultado($mysqli) {
		if ($rs = $mysqli->store_result()) {
       		if($rs->num_rows >0) {
    			$i=0;
				while ($finfo = $rs->fetch_field()) {
              	$campos[$finfo->name]=$i;
              	$i++;
				}
				while ($row = $rs->fetch_row()) $vec[] = $row;
				$rs->free_result();
				return new cResultado($campos, $vec);
       		}
			$mysqli->close();
		}
		return new cResultado();
	}
	/**********************************************************************/
	function LoginAlias($loginClass){
		global $LOGGER;
		$loginClassActual = $loginClass;
		$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
     	if (mysqli_connect_errno()) {
     		$LOGGER->addLine('ERROR',"FUNCION: 'LoginAlias' " .  mysqli_connect_error() );
     		$loginClassActual->errorCode = 1;
       		return  $loginClassActual;
     	}

	  	$SQL = "SELECT * FROM aliases a WHERE a.alias = '". trim($loginClassActual->alias) . "'";
	  	if (!$mysqli->real_query($SQL)) {
	  		$LOGGER->addLine('ERROR',"FUNCION: 'LoginAlias' " .  $mysqli->error.' CONSULTA: '.$SQL );
      	 	$loginClassActual->errorCode = 2;
       		return  $loginClassActual;
     	}
     	$resultado = cConfiguracion::getResultado($mysqli);
     	if ($resultado->cantidad() == 0) {
     		$loginClassActual->errorCode = 5;
       		return  $loginClassActual;
     	}

     	$loginClassActual->cuentaFk = $resultado->campo('cuentaFk', 0);
		$loginClassActual->esFlota = $resultado->campo('esFlota', 0);
		$loginClassActual->tablaId = $resultado->campo('id', 0);
		$loginClassActual->passwordDB = $resultado->campo('clave', 0);
     	$loginClassActual->mail = $resultado->campo('mail', 0);
     	return  $loginClassActual;
     }


	/**********************************************************************/
	function LoginFlota($loginClass) {
		global $LOGGER;
		$loginClassActual = $loginClass;
		$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
     	if (mysqli_connect_errno()) {
     		$LOGGER->addLine('ERROR',"FUNCION: 'LoginFlota' " .  mysqli_connect_error() );
     		$loginClassActual->errorCode = 1;
       		return  $loginClassActual;
     	}
		$SQL = " SELECT tlma.ORDER_ID as cuentaFk from tlmapersonas tlma " .
			   " WHERE tlma.USER_WEB = '" . $loginClassActual->codigoFlota . "'" .
			   " AND tlma.ES_FLOTA = true";

		if (!$mysqli->real_query($SQL)) {
			$LOGGER->addLine('ERROR',"FUNCION: 'LoginFlota' " .   $mysqli->error.' CONSULTA: '.$SQL  );
      	 	$loginClassActual->errorCode = 2;
       		return  $loginClassActual;
     	}

     	$resultado = cConfiguracion::getResultado($mysqli);
     	if ($resultado->cantidad() == 0) {
     		$loginClassActual->errorCode = 6;
       		return  $loginClassActual;
     	}
     	$loginClassActual->cuentaFk = $resultado->campo('cuentaFk', 0);
     	$loginClassActual->tablaId = $resultado->campo('cuentaFk', 0);
		$loginClassActual->esFlota = 1;
		return $loginClassActual;
	}

	/**********************************************************************/
	function LoginCuenta($loginClass) {
		global $LOGGER;
		$loginClassActual = $loginClass;
		$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
     	if (mysqli_connect_errno()) {
     		$LOGGER->addLine('ERROR',"FUNCION: 'LoginCuenta' " .  mysqli_connect_error() );
     		$loginClassActual->errorCode = 1;
       		return  $loginClassActual;
     	}
		$SQL = " SELECT abma.ORDER_ID as cuentaFk FROM abmacodigos abma " .
			   " INNER JOIN rcmacodigos rc on (rc.ORDER_ID = abma.ID_RC) " .
               " WHERE rc.CODIGOALFA = '" . $loginClassActual->codigorc . "'" .
               " AND abma.ID_CL = '" . $loginClassActual->codigocuenta . "'" .
               " AND abma.PARTICION = " . $loginClassActual->particion .
               " AND abma.OBJETIVO = " . $loginClassActual->objetivo;

		if (!$mysqli->real_query($SQL)) {
			$LOGGER->addLine('ERROR',"FUNCION: 'LoginCuenta' " .   $mysqli->error.' CONSULTA: '.$SQL  );
      	 	$loginClassActual->errorCode = 2;
       		return  $loginClassActual;
     	}

     	$resultado = cConfiguracion::getResultado($mysqli);
     	if ($resultado->cantidad() == 0) {
     		$loginClassActual->errorCode = 7;
       		return  $loginClassActual;
     	}
     	$loginClassActual->cuentaFk = $resultado->campo('cuentaFk', 0);
     	$loginClassActual->tablaId = $resultado->campo('cuentaFk', 0);
		$loginClassActual->esFlota = 0;
		return $loginClassActual;

	}

	/**********************************************************************/
	function LoginDealer($loginClass){
		global $LOGGER;
		$loginClassActual = $loginClass;
		$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
     	if (mysqli_connect_errno()) {
     		$LOGGER->addLine('ERROR',"FUNCION: 'LoginDealer' " .  mysqli_connect_error() );
     		$loginClassActual->errorCode = 1;
       		return  $loginClassActual;
     	}

		$SQL = "SELECT *, ";
		$SQL.= "CONCAT_WS(' ', cast(d.nombre as char), cast(d.apellido as char)) as descripcion ";
		$SQL.= "FROM dealer d ";
		$SQL.= "WHERE d.login ='". trim($loginClassActual->codigoDealer) . "'";

	  	if (!$mysqli->real_query($SQL)) {
	  		$LOGGER->addLine('ERROR',"FUNCION: 'LoginDealer' " .   $mysqli->error.' CONSULTA: '.$SQL  );
      	 	$loginClassActual->errorCode = 2;
       		return  $loginClassActual;
     	}

     	$resultado = cConfiguracion::getResultado($mysqli);
     	if ($resultado->cantidad() == 0) {
     		$loginClassActual->errorCode = 5;
       		return  $loginClassActual;
     	}

     	$loginClassActual->cuentaFk = $resultado->campo('id', 0);
		$loginClassActual->esFlota =  1;
		$loginClassActual->tablaId = $resultado->campo('id', 0);
		$loginClassActual->labelCuenta = $resultado->campo('descripcion', 0);
		//INICIALIZO EL ARRAY DE PERMISOS DE OBJETIVOS DEALER
		$monitorea = $resultado->campo('permisoMonitor', 0);
		$comandosGPRS = $resultado->campo('permisoComandosGPRS', 0);
		$comandosSMS = $resultado->campo('permisoComandosSMS', 0);
		$puntos = $resultado->campo('permisoPuntos', 0);
		$zonas = $resultado->campo('permisoZonas', 0);
		$logistica = $resultado->campo('permisoLogistica', 0);
		$loginClassActual->PERMISOSdealer = array($monitorea,$comandosGPRS,$comandosSMS,$puntos,$zonas,$logistica);
     	return  $loginClassActual;
     }

	/**********************************************************************/
	function RememberPasswordAbstracto($loginClass) {
		global $LOGGER;
		if ($loginClass->objetivo == 4) {
   			$loginClass = cConfiguracion::LoginAlias($loginClass);

		} else if ($loginClass->objetivo == 1 || $loginClass->objetivo == 2) {
   			$loginClass = cConfiguracion::LoginCuenta($loginClass);

		} else if ($loginClass->objetivo == 3) {
   			$loginClass = cConfiguracion::LoginFlota($loginClass);
   		} else if ($loginClass->objetivo == 5) {
   			$loginClass = cConfiguracion::LoginDealer($loginClass);
   		}

   		$errorCode = cConfiguracion::ProcesarRememberPassword($loginClass);
   		return $errorCode;
	}
	/*************************************************************************/
	function ProcesarRememberPassword($loginClass) {
		global $LOGGER;
		$errorCode = new CError();
		$loginClassActual = $loginClass;
		$errorCode->errorCode = $loginClassActual->errorCode;
		if ($errorCode->errorCode != 0) return $errorCode;
		$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
		if (mysqli_connect_errno()) {
			$LOGGER->addLine('ERROR',"FUNCION: 'ProcesarRememberPassword' " .  mysqli_connect_error() );
     		$errorCode->errorCode = 1;
       		return  $errorCode;
     	}
	
		if ($loginClassActual->esFlota == 0) {
			if (BYKOM_DB_TYPE == 0) {
				$SQL = "SELECT abma.objetivo as objetivo, " .
					"abma.AB_ENVCLAVE as clave, " .
					"elt(abma.WEBCLIENTE,1,0) as habilitado, " .
					"ie.email as mail FROM abmacodigos abma " .
					 " LEFT JOIN internet_email ie on (abma.email_env = ie.codigoemai)" .
				     " WHERE abma.order_id = " . $loginClassActual->cuentaFk;
			} else {
				$SQL = "SELECT abma.objetivo as objetivo, " .
					"abma.AB_ENVCLAVE as clave, " .
					"elt(abma.WEBCLIENTE,1,0) as habilitado, " .
					"abma.email_env as mail FROM abmacodigos abma " .
				     " WHERE abma.order_id = " . $loginClassActual->cuentaFk;
			}
		} else {
			if ($loginClassActual->objetivo == 5){ //es una cuenta DEALER
				$SQL = "SELECT 5 as objetivo, d.clave as clave, elt(d.habilitado,1,0) as habilitado, d.email as mail FROM dealer d " .
				     " WHERE d.id = " . $loginClassActual->cuentaFk;
			}else{
				if (BYKOM_DB_TYPE == 0) {
					$SQL = "SELECT 3 as objetivo, " .
						"tlma.PASS_WEB as clave, " .
						"elt(tlma.WEBCLIENTE,1,0) as habilitado, " .
						"ie.email as mail FROM tlmapersonas tlma " .
				     	" LEFT JOIN internet_email ie on (tlma.codigoemai = ie.codigoemai)" .
				     	" WHERE tlma.order_id = " . $loginClassActual->cuentaFk;
				} else {
					$SQL = "SELECT 3 as objetivo, " .
						"tlma.PASS_WEB as clave, " .
						"elt(tlma.WEBCLIENTE,1,0) as habilitado, " .
						"tlma.codigoemai as mail FROM tlmapersonas tlma " .
				     	" WHERE tlma.order_id = " . $loginClassActual->cuentaFk;
				}
			}
		}

		if (!$mysqli->real_query($SQL)) {
			$LOGGER->addLine('ERROR',"FUNCION: 'ProcesarRememberPassword' " .   $mysqli->error.' CONSULTA: '.$SQL  );
      		$errorCode->errorCode = 2;//'Se produjo un error al ejecutar la consulta. Reintente mas tarde.
       		return  $errorCode;
     	}

     	$resultado = cConfiguracion::getResultado($mysqli);
     	if ($resultado->cantidad() == 0) {
     		$errorCode->errorCode = 8;//'No se pudo obtener la informacion de la cuenta. Comuniquese con el administrador del sistema.'
       		return  $errorCode;
     	}
     	//Si no es alias, le seteo mail y clave de la cuenta. Sino obtuvo la info del alias.
     	if ($loginClassActual->objetivo != 4) {
     		$loginClassActual->passwordDB = $resultado->campo('clave', 0);
     		$loginClassActual->mail = $resultado->campo('mail', 0);
     	}

     	$loginClassActual->objetivoDB = $resultado->campo('objetivo', 0);
     	$loginClassActual->habilitado = $resultado->campo('habilitado', 0);
     	if ($loginClassActual->habilitado == 0) {//no esta habilitado
     		$errorCode->errorCode = 9; //'Esta intentando entrar a un area restringida. Consulte al proveedor del sistema para utilizar este servicio'
       		return  $errorCode;
     	}

     	if (trim($loginClassActual->mail) == '') {//no tiene mail
     		$errorCode->errorCode = 10;//'La cuenta no tiene configurada una direccion de mail. Comuniquese con el administrador del sistema.'
       		return  $errorCode;
     	}

     	if (trim($loginClassActual->mail) == trim($loginClassActual->email)) {
     		if (trim($loginClass->passwordDB) == '') {
     			$errorCode->errorCode = 11;// 'Cuenta sin activar!. Se le ha enviado un correo electronico para que realice la activacion.'
     			$tipo = 1;
     		} else {
     			$errorCode->errorCode = 14;//'Se le ha enviado un correo electronico para que realice el cambio de password.'
     			$tipo = 2;
     		}
			$idMail = cConfiguracion::recordatorioDePassword($loginClassActual->tablaId, $loginClassActual->objetivo, $tipo, $loginClassActual->esFlota);
     		if ($idMail == 0) {
     			$errorCode->errorCode = 2;//'Se produjo un error al ejecutar la consulta. Reintente mas tarde.'
     		}
			else {
				$errorCode->id = $idMail;
			}
     		return $errorCode;
     	} else {
     		$errorCode->errorCode = 15 ;//'El email ingresado no coincide con el de la cuenta.'
     		return $errorCode;
     	}
     	$errorCode->errorCode = 30;
     	return $errorCode;
	}
	/**********************************************************************/
	function recordatorioDePassword($cuentaFk, $objetivo, $tipo, $esFlota) {
		global $LOGGER;
		$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
		
		if (mysqli_connect_errno()) {
			$LOGGER->addLine('ERROR',"FUNCION: 'recordatorioDePassword' " .  mysqli_connect_error() );
			return 0;
		}
		
		$SQL = "INSERT INTO recordatorio (cuentaFk, objetivo, tipo, enviado, esFlota, ip) " .
		       " VALUES (" . $cuentaFk . ", " . $objetivo. ", " . $tipo.", 0, " . $esFlota.", '" . HOSTCLIENT_NO_SSL."')" ;

		if (!$mysqli->real_query($SQL)) {
			$LOGGER->addLine('ERROR',"FUNCION: 'recordatorioDePassword' " .   $mysqli->error.' CONSULTA: '.$SQL  );
      		return 0;
     	}
     	return $mysqli->insert_id;
	}
	/*************************************************************************/
	function enviarSolicitud($envioSolicitud){
		global $LOGGER;
		$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
		if (mysqli_connect_errno()) {
			$LOGGER->addLine('ERROR',"FUNCION: 'enviarSolicitud' " .  mysqli_connect_error() );
		}
		$SQL =	" INSERT INTO recordatorio (cuentaFk, objetivo, tipo, enviado, esFlota, ip, cuerpo, solicitante, telefono, emailContacto) " .
				" VALUES (". $envioSolicitud->cuentaFk .", ". $envioSolicitud->objetivo .", ". $envioSolicitud->tipo .", 0, ". $envioSolicitud->esFlota .", '". HOSTCLIENT_NO_SSL ."', '". $envioSolicitud->cuerpo ."', '". $envioSolicitud->solicitante ."', '". $envioSolicitud->telefono ."', '". $envioSolicitud->emailContacto ."')";

		if( $mysqli->real_query($SQL) )	{
			$envioSolicitud->id = $mysqli->insert_id;
//			$mysqli->close();
//			$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
			$SQL =	"	SELECT *
						FROM recordatorio
						WHERE id=". $envioSolicitud->id;

			if( $mysqli->real_query($SQL) ){
				$resultado = cConfiguracion::getResultado( $mysqli );
				if( !$resultado->cantidad() == 0 ){
					$envioSolicitud->email = $resultado->campo('email', 0);
					$envioSolicitud->fechahora = $resultado->campo('fechahora', 0);
					$envioSolicitud->enviado = $resultado->campo('enviado', 0);
					$envioSolicitud->fechaEnviado = $resultado->campo('fechaEnviado', 0);
					$envioSolicitud->ip = $resultado->campo('ip', 0);
				}
			}
		}else{
			$LOGGER->addLine('ERROR',"FUNCION: 'enviarSolicitud' " .   $mysqli->error.' CONSULTA: '.$SQL  );
		}
     	return $envioSolicitud;
	}
	/*************************************************************************/
	function validarToken($clienteId, $token) {
		global $LOGGER;
		$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
     	if (mysqli_connect_errno()) {
     		$LOGGER->addLine('ERROR',"FUNCION: 'validarToken' " .  mysqli_connect_error() );
       		return -5;
     	}
     	$SQL = "SELECT *, now() as hora FROM urltemporal ut WHERE" .
			   " ut.token = '" . $token . "'" .
			   " AND ut.cuentaFk = " . $clienteId;


		if (!$mysqli->real_query($SQL)) {
			$LOGGER->addLine('ERROR',"FUNCION: 'validarToken' " .   $mysqli->error.' CONSULTA: '.$SQL  );
      	 	return -1;
     	}
     	$resultado = cConfiguracion::getResultado($mysqli);
     	if ($resultado->cantidad() == 0) {
     		return -2;
     	}
     	$urlId = $resultado->campo('id', 0);
     	$hora = strtotime($resultado->campo('hora', 0));
  		$caduca = strtotime($resultado->campo('fecha', 0));
  		if ($hora > $caduca) {
  			return -3;
  		}
  		return $urlId;
	}
	/*************************************************************************/
	function changePasswordTemporal($clienteId, $objetivo, $esFlota, $newpass, $token) {
		global $LOGGER;
		$urlId = cConfiguracion::validarToken($clienteId, $token);
		if ($urlId < 0) {
			return ("La pagina que intenta visualizar  ha caducado." . $urlId);
		}
		$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
     	if (mysqli_connect_errno()) {
     		$LOGGER->addLine('ERROR',"FUNCION: 'changePasswordTemporal' " .  mysqli_connect_error() );
       		return ("Error al conectarse a la DB.");
     	}

     	if ($objetivo == 4) {
     		$SQLSELECT = "SELECT a.id FROM aliases a WHERE" .
						 " a.id = " . $clienteId . "";

			$SQL = "UPDATE aliases a SET a.clave = '". $newpass . "'" .
			       " WHERE a.id = ". $clienteId ."" ;
     	//return $SQLSELECT . " - " . $SQL;
		} else if ($objetivo == 5) {
			$SQLSELECT = "SELECT d.id FROM dealer d WHERE" .
						 " d.id = " . $clienteId ;

			$SQL = "UPDATE dealer d SET d.clave = '". $newpass . "'" .
			       " WHERE d.id = ". $clienteId ;
     	} else if ($objetivo == 1 || $objetivo == 2) {
				$SQLSELECT = "SELECT abma.order_id FROM abmacodigos abma WHERE" .
						 " abma.order_id = " . $clienteId;

				$SQL = "UPDATE abmacodigos abma SET abma.AB_ENVCLAVE = '". $newpass . "', abma.PASS_CAD = 0".
			       " WHERE abma.order_id = ". $clienteId;

		} else if ($objetivo == 3){
				$SQLSELECT = "SELECT tlma.order_id FROM tlmapersonas tlma WHERE" .
						 " tlma.order_id = " . $clienteId;

				$SQL = "UPDATE tlmapersonas tlma SET tlma.PASS_WEB = '". $newpass . "', tlma.PASS_CAD = 0".
			       " WHERE tlma.order_id = ". $clienteId;
		}

		if (!$mysqli->real_query($SQLSELECT)) {
			$LOGGER->addLine('ERROR',"FUNCION: 'changePasswordTemporal' " .   $mysqli->error.' CONSULTA: '.$SQLSELECT  );
      	 	return ("Error al validar password.");
     	}

     	if ($rs = $mysqli->store_result()) {
       		if($rs->num_rows == 0) {
       			return ("Error al recuperar la informacion de la cuenta." . $SQLSELECT);
       		}
       		if (!$mysqli->real_query($SQL)) {
       			$LOGGER->addLine('ERROR',"FUNCION: 'changePasswordTemporal' " .   $mysqli->error.' CONSULTA: '.$SQL  );
      	 		return ("Error al intentar modificar el password.");
     		}
     	} else {
     		return ('No se pudo cambiar la password');
     	}
     	cConfiguracion::borrarUrlTemporal($urlId);
     	return ($SQLDELETE);

	}
	/*************************************************************************/
	function borrarUrlTemporal($id) {
		global $LOGGER;
		$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
     	if (mysqli_connect_errno()) {
     		$LOGGER->addLine('ERROR',"FUNCION: 'borrarUrlTemporal' " .  mysqli_connect_error() );
       		return ("Error al conectarse a la DB.");
     	}
     	$SQLDELETE = "DELETE FROM urltemporal where urltemporal.id = " . $id;
     	if (!$mysqli->real_query($SQLDELETE)) {
     		$LOGGER->addLine('ERROR',"FUNCION: 'borrarUrlTemporal' " .   $mysqli->error.' CONSULTA: '.$SQLDELETE  );
      	 	return ("Error al intentar borrar la pagina temporal.");
     	}
     	return ('');

	}
	/*************************************************************************/
	function changePassword($clienteId, $objetivo, $esFlota, $oldPassword, $newPassword) //siendo clienteID el id de una flota o bien el Id de un Movil
	{
		global $LOGGER;
		$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
     	if (mysqli_connect_errno()) {
     		$LOGGER->addLine('ERROR',"FUNCION: 'changePassword' " .  mysqli_connect_error() );
       		return ("Error al conectarse a la DB.");
     	}
		if ($objetivo == 4) {
     		$SQLSELECT = "SELECT a.id FROM aliases a WHERE a.id = " . $clienteId . " and a.clave = '$oldPassword'";

			$SQL = "UPDATE aliases a SET a.clave = '". $newPassword ."' WHERE a.id = ". $clienteId;

		//	return $SQLSELECT."--".$SQL;
     	} else if ($objetivo == 1 || $objetivo == 2) {
			$SQLSELECT = "SELECT abma.order_id FROM abmacodigos abma WHERE" .
						 " abma.AB_ENVCLAVE = '" . $oldPassword . "'" .
						 " AND abma.order_id = " . $clienteId;

			$SQL = "UPDATE abmacodigos abma SET abma.AB_ENVCLAVE = '". $newPassword . "', abma.PASS_CAD = 0".
			       " WHERE abma.order_id = ". $clienteId;

		} else if ($objetivo == 3) {
			$SQLSELECT = "SELECT tlma.order_id FROM tlmapersonas tlma WHERE" .
						 " tlma.PASS_WEB = '" . $oldPassword . "'" .
						 " AND tlma.order_id = " . $clienteId;

			$SQL = "UPDATE tlmapersonas tlma SET tlma.PASS_WEB = '". $newPassword . "', tlma.PASS_CAD = 0".
			       " WHERE tlma.order_id = ". $clienteId;
		} else if ($objetivo == 5) {
			$SQLSELECT = "SELECT d.id FROM dealer d  WHERE" .
						 " d.clave = '" . $oldPassword . "'" .
						 " AND d.id = " . $clienteId;

			$SQL = "UPDATE dealer d SET d.clave = '". $newPassword . "' " .
			       " WHERE d.id = ". $clienteId;
		}
		if (!$mysqli->real_query($SQLSELECT)) {
			$LOGGER->addLine('ERROR',"FUNCION: 'changePassword' " .   $mysqli->error.' CONSULTA: '.$SQLSELECT  );
      	 	return ("Error al validar password.");
     	}

     	if ($rs = $mysqli->store_result()) {
       		if($rs->num_rows == 0){
       			return ("El password que ha escrito es invalido.");
       		}
       		if (!$mysqli->real_query($SQL)){
       			$LOGGER->addLine('ERROR',"FUNCION: 'changePassword' " .   $mysqli->error.' CONSULTA: '.$SQL  );
      	 		return ("Error al intentar modificar el password.");
     		}
     	} else {
     		return ('No se pudo cambiar la password');
     	}
     	return ('');
    }

	/**********************************************************************************************************/
	function getMisAlias($clienteId, $esFlota) //siendo clienteID el id de una flota o bien el Id de un Movil
	{
		global $LOGGER;
	 	$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
     	if (mysqli_connect_errno()) {
     		$LOGGER->addLine('ERROR',"FUNCION: 'getMisAlias' " .  mysqli_connect_error() );
       		return new cResultado();
     	}
	  	$SQL = "SELECT * FROM aliases a WHERE a.cuentaFk = ". $clienteId . " AND a.esFlota = " . $esFlota;
	  	if (!$mysqli->real_query($SQL)) {
	  		$LOGGER->addLine('ERROR',"FUNCION: 'getMisAlias' " .   $mysqli->error.' CONSULTA: '.$SQL  );
      	 	return ("error de query");
     	}
     	return cConfiguracion::getResultado($mysqli);
	}

	/**********************************************************************************************************/
	function getCuentasByAlias($aliasId,$iObjetivo) //retorna todos los ID de los moviles que puede ver un Alias
	{
		global $LOGGER;
	 	$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
     	if (mysqli_connect_errno()) {
     		$LOGGER->addLine('ERROR',"FUNCION: 'getCuentasByAlias' " .  mysqli_connect_error() );
       		return new cResultado();
     	}
	  	$SQL = "SELECT id as iId, aliasId as iAliasId, movilId as iCuentaId, caduca as dCaduca, objetivo as iObjetivo
	  		 FROM alias_movil am WHERE am.aliasId = ". $aliasId;
	  	if($iObjetivo!=""){
	  		$SQL.= " and am.objetivo = $iObjetivo ";
	  	}
	  	if (!$mysqli->real_query($SQL)) {
	  		$LOGGER->addLine('ERROR',"FUNCION: 'getCuentasByAlias' " .   $mysqli->error.' CONSULTA: '.$SQL  );
      	 	return ("error de query");
     	}
     	return cConfiguracion::getResultado($mysqli);
	}

	/**********************************************************************************************************/
	/**
	 * by Rodrigo A. Rio <rrio@aplay.com.ar>
	 *
	 */
	function getFlotasByAlias($aliasId) //retorna todos los ID de las flotas que puede ver un Alias
	{
		global $LOGGER;
	 	$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
     	if (mysqli_connect_errno()) {
     		$LOGGER->addLine('ERROR',"FUNCION: 'getFlotasByAlias' " .  mysqli_connect_error() );
       		return new cResultado();
     	}
	  	$SQL = "SELECT id as iId, aliasFk as iAliasId, flotaFk as iFlotaId, caduca as dCaduca
	  			 FROM alias_flota af WHERE af.aliasFk = ". $aliasId;

	  	if (!$mysqli->real_query($SQL)) {
	  		$LOGGER->addLine('ERROR',"FUNCION: 'getFlotasByAlias' " .   $mysqli->error.' CONSULTA: '.$SQL  );
      	 	return ("error de query");
     	}
     	return cConfiguracion::getResultado($mysqli);
	}

	/**********************************************************************************************************/
	/**
	 * by Rodrigo A. Rio <rrio@aplay.com.ar>
	 *
	 */
	function getRCByAlias($aliasId,$iObjetivo) //retorna todos los ID de los RC que puede ver un Alias
	{
		global $LOGGER;
	 	$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
     	if (mysqli_connect_errno()) {
     		$LOGGER->addLine('ERROR',"FUNCION: 'getRCByAlias' " .  mysqli_connect_error() );
       		return new cResultado();
     	}
	  	$SQL = "SELECT id as iId, aliasFk as iAliasId, empresaFk as iEmpresaId, caduca as dCaduca, objetivo as iObjetivo
	  			FROM alias_rc arc WHERE arc.aliasFk = ". $aliasId ;
	  	if($iObjetivo != "" ){
	  		$SQL .= " and arc.objetivo = $iObjetivo ";
	  	}
	  	if (!$mysqli->real_query($SQL)) {
	  		$LOGGER->addLine('ERROR',"FUNCION: 'getRCByAlias' " .   $mysqli->error.' CONSULTA: '.$SQL  );
      	 	return ("error de query");
     	}
     	return cConfiguracion::getResultado($mysqli);
	}

	/**********************************************************************************************************/
	function saveOrUpdateAlias($alias) //siendo clienteID el id de una flota o bien el Id de un Movil
	{
		global $LOGGER;
		if (trim($alias->alias) == '') {
			return ("El alias no puede estar vacio.");
		}
	 	$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
     	if (mysqli_connect_errno()) {
     		$LOGGER->addLine('ERROR',"FUNCION: 'saveOrUpdateAlias' " .  mysqli_connect_error() );
       		return ("No se pudo conectar a la DB.");
     	}
       	if (trim($alias->id)!='') {
       		$SQLPASS = '';
       		if (trim($alias->clave)!='') {
       			$SQLPASS = ",a.clave = '" . strtoupper(md5($alias->clave)) . "' ";
       		}
       		$sSQLPermisos 	= "";
       		if($alias->vPermisos){
       			foreach($alias->vPermisos as $key=>$value){
       				switch((int)$key){
       					case 0: $sField = "permisoMonitor";break;
       					case 1: $sField = "permisoComandosGPRS";break;
       					case 2:	$sField = "permisoComandosSMS";break;
       					case 3: $sField = "permisoVerReportes";break;
       					case 4: $sField = "permisoVerPuntos";break;
       					case 5: $sField = "permisoVerZonas";break;
       					case 6: $sField = "permisoVerContactos";break;
       					case 7: $sField = "permisoVerLogistica";break;
       					case 8: $sField = "permisoModificarPuntos";break;
       					case 9: $sField = "permisoModificarZonas";break;
       					case 10:$sField = "permisoModificarContactos";break;
       					case 11:$sField = "permisoModificarLogistica";break;
       					case 12:$sField = "permisoMobile";break;
       					case 13:$sField = "permisoAccedeSetup";break;
       					case 14:$sField = "permisoAccedeEventos";break;
       					case 15:$sField = "permisoAccedeUsuarios";break;
       					case 16:$sField = "permisoAccedeFacturas";break;
       					case 17:$sField = "permisoAccedeZonas";break;
       					case 18:$sField = "permisoAccedeContactos";break;
       					case 19:$sField = "permisoAccedeHorarios";break;
       					case 20:$sField = "habilitarFijo";break;
       					case 21:$sField = "habilitarMovil";break;
       					case 22:$sField = "habilitarFlota";break;
       					case 23:$sField = "habilitarRC";break;
       					case 24:$sField = "habilitarRCFijo";break;
       					case 25:$sField = "permisoVerRutas";break;
       					case 26:$sField = "permisoModificarRutas";break;
       					case 27:$sField = "permisoVerAgendaGral";break;
       					case 28:$sField = "permisoModificaAgendaGral";break;
       				}
       				if($value){
       					$sSQLPermisos .= ", $sField = 1";
       				}else{
       					$sSQLPermisos .= ", $sField = 0";
       				}
       			}
       		}
       		$SQL = "UPDATE aliases a SET a.alias = '" . $alias->alias ."'," .
				   "a.nombre = '" . $alias->nombre ."',".
				   "a.mail = '" . $alias->mail ."'".
				   $SQLPASS .
				   $sSQLPermisos .
				   ", a.habilitado = '" . $alias->habilitado ."'".
       		       " WHERE a.id = ". trim($alias->id);
       		}else{
				$SQLPASS1 = '';
				$SQLPASS2 = '';
       			if (trim($alias->clave)!='') {
       				$SQLPASS1 = ",clave";
       				$SQLPASS2 = ",'" . strtoupper(md5($alias->clave)) . "'";
       			}
       			$sSQLValuePermisos 	= "";
       			$sSQLFieldsPermisos = "";
       			if($alias->vPermisos){
       				foreach($alias->vPermisos as $value){
       					if($value){
       						$sSQLValuePermisos .= " ,1";
       					}else{
       						$sSQLValuePermisos .= " ,0";
       					}
       				}
       			}
       			if($sSQLValuePermisos!=""){
       				$sSQLFieldsPermisos = " ,permisoMonitor, permisoComandosGPRS, permisoComandosSMS, permisoVerReportes, permisoVerPuntos, permisoVerZonas, permisoVerContactos,permisoVerLogistica,
permisoModificarPuntos, permisoModificarZonas, permisoModificarContactos, permisoModificarLogistica, permisoMobile,
permisoAccedeSetup, permisoAccedeEventos, permisoAccedeUsuarios, permisoAccedeFacturas, permisoAccedeZonas, permisoAccedeContactos,
permisoAccedeHorarios, habilitarFijo, habilitarMovil, habilitarFlota, habilitarRC, habilitarRCFijo,permisoVerRutas, permisoModificarRutas, permisoVerAgendaGral, permisoModificaAgendaGral ";
       			}
       			$SQL = "INSERT aliases (cuentaFK, esFlota, alias, nombre, mail " . $SQLPASS1." ".$sSQLFieldsPermisos.", habilitado )" .
       			" VALUES (" . $alias->cuentaFk ."," . $alias->esFlota .",'" . $alias->alias ."','" . $alias->nombre ."','". $alias->mail ."' ". $SQLPASS2 ." $sSQLValuePermisos,". $alias->habilitado .");";
		}
		$mysqli->real_query("BEGIN"); //INICIALIZO LA TRANSACCION
		if (!$mysqli->real_query($SQL)){
			$LOGGER->addLine('ERROR',"FUNCION: 'saveOrUpdateAlias' " .   $mysqli->error.' CONSULTA: '.$SQL  );
   			$mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
       		return ("Error. La transaccion no pudo ser realizada.");
     	}

		//elimino de la tabla alias_movil,alias_rc,alias_flota(Si es un UPDATE)
		if (trim($alias->id)!=''){
			if($alias->vPermisos[20] && $alias->vPermisos[21]){
				$SQL = "DELETE FROM `alias_movil`  WHERE `aliasId` =".$alias->id;
			}elseif(!$alias->vPermisos[20] && $alias->vPermisos[21]){
				$SQL = "DELETE FROM `alias_movil`  WHERE `aliasId` =".$alias->id." and objetivo = 2";
			}elseif($alias->vPermisos[20] && !$alias->vPermisos[21]){
				$SQL = "DELETE FROM `alias_movil`  WHERE `aliasId` =".$alias->id." and objetivo = 1";
			}else{
				$SQL = "";
			}
			if ($SQL != "" && !$mysqli->real_query($SQL)){
   				$mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
       			return ("Error. La transaccion no pudo ser realizada.");
     		}
			if($alias->vPermisos[23] && $alias->vPermisos[24]){
				$SQL2 = "DELETE FROM `alias_rc` WHERE alias_rc.`aliasFk` =".$alias->id;
			}elseif(!$alias->vPermisos[24] && $alias->vPermisos[23]){
				$SQL2 = "DELETE FROM `alias_rc` WHERE alias_rc.`aliasFk` =".$alias->id." and objetivo = 2";
			}elseif($alias->vPermisos[24] && !$alias->vPermisos[23]){
				$SQL2 = "DELETE FROM `alias_rc` WHERE alias_rc.`aliasFk` =".$alias->id." and objetivo = 1";
			}else{
				$SQL2 = "";
			}
			if ($SQL2 != "" && !$mysqli->real_query($SQL2)){
				$LOGGER->addLine('ERROR',"FUNCION: 'saveOrUpdateAlias' " .   $mysqli->error.' CONSULTA: '.$SQL2  );
   				$mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
       			return ("Error. La transaccion no pudo ser realizada.");
     		}
     		if($alias->vPermisos[22]){
				$SQL3 = "DELETE FROM `alias_flota` WHERE alias_flota.`aliasFk` =".$alias->id;
     		}else{
     			$SQL3 = "";
     		}
			if($SQL3 != "" && !$mysqli->real_query($SQL3)){
				$LOGGER->addLine('ERROR',"FUNCION: 'saveOrUpdateAlias' " .   $mysqli->error.' CONSULTA: '.$SQL3  );
   				$mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
       			return ("Error. La transaccion no pudo ser realizada.");
     		}
		}else{
			$alias->id = $mysqli->insert_id;
		}
		//inserto las nuevas relaciones si las hay
		if ($alias->esFlota) {
			$SQL = "";
			if ($alias->cantidadMoviles()>0){
				$SQL = "INSERT INTO alias_movil(aliasId, movilId,caduca,objetivo) VALUES ";
				$comma = "";
				$iObjetivo = 2;
				for ($i=0; $i<$alias->cantidadMoviles(); $i++){
					$dCaduca = "";
					if ($alias->esFlota == 5){
						$sSQL = "SELECT caduca,objetivo FROM dealer_cuenta WHERE dealerFk = ".$alias->cuentaFk." AND cuentaFk = ".$alias->MOVILES[$i]." and objetivo = 2";
						if($result = $mysqli->query($sSQL)){
							while ($obj = $result->fetch_object()) {
					 			$dCaduca  = $obj->caduca;
					 		}
						}
					}
					$dCaduca = ($dCaduca == "") ? "NULL" : "'".$dCaduca."'";
    				$SQL .= $comma."(".$alias->id.", ".$alias->MOVILES[$i].",".$dCaduca.",".$iObjetivo.")";
					$comma = ',';
 				}
			}else{ //borramos todas las relaciones, o sea que podra ver todos los autos
				if($alias->vPermisos[21]){
					$SQL = "DELETE FROM alias_movil WHERE alias_movil.aliasId = " . $alias->id ." and objetivo = 2";
				}
			}
			$SQL.=";";
			if ($SQL != ";" && !$mysqli->real_query($SQL)){
				$LOGGER->addLine('ERROR',"FUNCION: 'saveOrUpdateAlias' " .   $mysqli->error.' CONSULTA: '.$SQL  );
   				$mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
       			return ("Error. La transaccion no pudo ser realizada." . $SQL);
     		}
			if ($alias->esFlota == 5){
				$SQL = "";
				if ($alias->cantidadFijos()>0){
					$SQL = "INSERT INTO alias_movil(aliasId, movilId,caduca,objetivo) VALUES ";
					$comma = "";
					$iObjetivo = 1;
					for ($i=0; $i<$alias->cantidadFijos(); $i++){
						$dCaduca = "";
						if ($alias->esFlota == 5){
							$sSQL = "SELECT caduca,objetivo FROM dealer_cuenta WHERE dealerFk = ".$alias->cuentaFk." AND cuentaFk = ".$alias->FIJOS[$i]." and objetivo = 1 ";
							if($result = $mysqli->query($sSQL)){
								while ($obj = $result->fetch_object()) {
						 			$dCaduca  = $obj->caduca;
						 		}
							}
						}
						$dCaduca = ($dCaduca == "") ? "NULL" : "'".$dCaduca."'";
	    				$SQL .= $comma."(".$alias->id.", ".$alias->FIJOS[$i].",".$dCaduca.",".$iObjetivo.")";
						$comma = ',';
	 				}
				}else{ //borramos todas las relaciones, o sea que podra ver todos los fijos
					if($alias->vPermisos[20]){
						$SQL = "DELETE FROM alias_movil WHERE alias_movil.aliasId = " . $alias->id ." and objetivo = 1";
					}
				}
				$SQL.=";";
				if($SQL != ";" && !$mysqli->real_query($SQL) ){
					$LOGGER->addLine('ERROR',"FUNCION: 'saveOrUpdateAlias' " .   $mysqli->error.' CONSULTA: '.$SQL  );
   					$mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
       				return ("Error. La transaccion no pudo ser realizada." . $SQL);
     			}
     			$SQL2 = "";
				if ($alias->cantidadRCFijos()>0){
					$SQL2 = "INSERT INTO alias_rc(aliasFk, empresaFk,caduca,objetivo) VALUES ";
					$comma = "";
					$iObjetivoRC = 1;
					for($i=0; $i<$alias->cantidadRCFijos(); $i++){
						$dCaduca = "";
						$sSQL = "SELECT id,caduca,objetivo FROM dealer_rc WHERE dealerFk = ".$alias->cuentaFk." AND empresaFk = ".$alias->RCFIJOS[$i]." and objetivo = 1";
						if($result = $mysqli->query($sSQL)){
							while ($obj = $result->fetch_object()) {
					 			$dCaduca  = $obj->caduca;
					 		}
						}
						$dCaduca = ($dCaduca == "") ? "NULL" : "'".$dCaduca."'";

						$SQL2 .= $comma."(".$alias->id.", ".$alias->RCFIJOS[$i].",".$dCaduca.",".$iObjetivoRC.")";
						$comma = ',';
	 				}
				}else{ //borramos todas las relaciones, o sea que podra ver todas las empresas para fijos
					if($alias->vPermisos[24]){
						$SQL2 = "DELETE FROM alias_rc WHERE alias_rc.aliasFk = " . $alias->id . " and objetivo = 1";
					}
				}
				$SQL2.=";";
				if ($SQL2 != ";" && !$mysqli->real_query($SQL2)){
					$LOGGER->addLine('ERROR',"FUNCION: 'saveOrUpdateAlias' " .   $mysqli->error.' CONSULTA: '.$SQL2  );
   					$mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
       				return ("Error. La transaccion no pudo ser realizada 2." . $SQL2);
     			}
     			$SQL2 = "";
				if ($alias->cantidadRCS()>0){
					$SQL2 = "INSERT INTO alias_rc(aliasFk, empresaFk,caduca,objetivo) VALUES ";
					$comma = "";
					$iObjetivoRC = 2;
					for($i=0; $i<$alias->cantidadRCS(); $i++){
						$dCaduca = "";
						$sSQL = "SELECT id,caduca,objetivo FROM dealer_rc WHERE dealerFk = ".$alias->cuentaFk." AND empresaFk = ".$alias->RCS[$i]." and objetivo = 2";
						if($result = $mysqli->query($sSQL)){
							while ($obj = $result->fetch_object()) {
					 			$dCaduca  = $obj->caduca;
					 		}
						}
						$dCaduca = ($dCaduca == "") ? "NULL" : "'".$dCaduca."'";
						$SQL2 .= $comma."(".$alias->id.", ".$alias->RCS[$i].",".$dCaduca.",".$iObjetivoRC.")";
						$comma = ',';
	 				}
				}else{ //borramos todas las relaciones, o sea que podra ver todas las empresas
					if($alias->vPermisos[23]){
						$SQL2 = "DELETE FROM alias_rc WHERE alias_rc.aliasFk = " . $alias->id . " and objetivo = 2";
					}
				}
				$SQL2.=";";
				if ($SQL2 != ";" && !$mysqli->real_query($SQL2)){
					$LOGGER->addLine('ERROR',"FUNCION: 'saveOrUpdateAlias' " . $mysqli->error.' CONSULTA: '.$SQL2 );
   					$mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
       				return ("Error. La transaccion no pudo ser realizada 2." . $SQL2);
     			}
     			$SQL3 = "";
				if ($alias->cantidadFlotas()>0) {
					$SQL3 = "INSERT INTO alias_flota(aliasFk, flotaFk, caduca) VALUES ";
					$comma = "";
					for ($i=0; $i<$alias->cantidadFlotas(); $i++){
						$dCaduca = "";
						$sSQL = "SELECT caduca FROM dealer_flota WHERE dealerFk = ".$alias->cuentaFk." AND flotaFk = ".$alias->FLOTAS[$i]."";
						if($result = $mysqli->query($sSQL)){
							while ($obj = $result->fetch_object()) {
					 			$dCaduca  = $obj->caduca;
					 		}
						}
						$dCaduca = ($dCaduca == "") ? "NULL" : "'".$dCaduca."'";
	    				$SQL3 .= $comma."(".$alias->id.", ".$alias->FLOTAS[$i].",".$dCaduca.")";
						$comma = ',';
	 				}
				}else{ //borramos todas las relaciones, o sea que podra ver todas flotas
					if($alias->vPermisos[22]){
						$SQL3 = "DELETE FROM alias_flota WHERE alias_flota.aliasFk = " . $alias->id;
					}
				}
				$SQL3.=";";
				if ($SQL3 != ";" && !$mysqli->real_query($SQL3)){
					$LOGGER->addLine('ERROR',"FUNCION: 'saveOrUpdateAlias' " . $mysqli->error.' CONSULTA: '.$SQL3 );
   					$mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
       				return ("Error. La transaccion no pudo ser realizada 3." . $SQL3);
     			}
			}
			if($alias->esFlota == 1){
				$SQL = "";
				if ($alias->cantidadFijos()>0){
					$SQL = "INSERT INTO alias_movil(aliasId, movilId,caduca,objetivo) VALUES ";
					$comma = "";
					$iObjetivo = 1;
					for ($i=0; $i<$alias->cantidadFijos(); $i++){
						$dCaduca = "";
						if ($alias->esFlota == 5){
							$sSQL = "SELECT caduca,objetivo FROM dealer_cuenta WHERE dealerFk = ".$alias->cuentaFk." AND cuentaFk = ".$alias->FIJOS[$i]." and objetivo = 1 ";
							if($result = $mysqli->query($sSQL)){
								while ($obj = $result->fetch_object()) {
						 			$dCaduca  = $obj->caduca;
						 		}
							}
						}
						$dCaduca = ($dCaduca == "") ? "NULL" : "'".$dCaduca."'";
	    				$SQL .= $comma."(".$alias->id.", ".$alias->FIJOS[$i].",".$dCaduca.",".$iObjetivo.")";
						$comma = ',';
	 				}
				}else{ //borramos todas las relaciones, o sea que podra ver todos los fijos
					if($alias->vPermisos[20]){
						$SQL = "DELETE FROM alias_movil WHERE alias_movil.aliasId = " . $alias->id ." and objetivo = 1";
					}
				}
				$SQL.=";";
				if ( $SQL != ";" && !$mysqli->real_query($SQL) ){
					$LOGGER->addLine('ERROR',"FUNCION: 'saveOrUpdateAlias' " . $mysqli->error.' CONSULTA: '.$SQL );
   					$mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
       				return ("Error. La transaccion no pudo ser realizada." . $SQL);
     			}
			}
		}
       	$mysqli->real_query("COMMIT");	//LA TRANSACCION FUE EXITOSA=>PERSISTO LOS CAMBIOS
 		$mysqli->close();
	    return ('ok');
	}
    /**********************************************************************************************************/
	/**
	 * Elimino Alias y todas sus referencias
	 * @param $selectedId
	 *
	 */
    function deleteAlias($selectedId){
    	global $LOGGER;
		$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
     	if (mysqli_connect_errno()) {
     		$LOGGER->addLine('ERROR',"FUNCION: 'deleteAlias' " .  mysqli_connect_error() );
       		return ("Error al conectarse a la DB.");
     	}
     	$mysqli->real_query("BEGIN"); //INICIALIZO LA TRANSACCION
     	$SQLDELETE = "DELETE FROM aliases where aliases.id IN (" . $selectedId . ")";
     	if (!$mysqli->real_query($SQLDELETE)) {
     		$LOGGER->addLine('ERROR',"FUNCION: 'deleteAlias' " . $mysqli->error.' CONSULTA: '.$SQLDELETE );
      	 	return ("Error al intentar eliminar alias. $SQLDELETE");
     	}
     	$vAliasId = explode(",",$selectedId);
     	if(is_array($vAliasId)){
     		foreach($vAliasId as $iAliasId){
     			$sSQLDeleteMovil = "DELETE FROM alias_movil where aliasId = $iAliasId";
     			if (!$mysqli->real_query($sSQLDeleteMovil)) {
     				$LOGGER->addLine('ERROR',"FUNCION: 'deleteAlias' " . $mysqli->error.' CONSULTA: '.$sSQLDeleteMovil );
     				$mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
      	 			return ("Error al intentar eliminar moviles de alias. $sSQLDeleteMovil");
     			}
     			$sSQLDeleteFlotas = "DELETE FROM alias_flota where aliasFk = $iAliasId";
     			if (!$mysqli->real_query($sSQLDeleteFlotas)) {
     				$LOGGER->addLine('ERROR',"FUNCION: 'deleteAlias' " . $mysqli->error.' CONSULTA: '.$sSQLDeleteFlotas );
     				$mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
      	 			return ("Error al intentar eliminar flotas de alias. $sSQLDeleteFlotas");
     			}
     			$sSQLDeleteRCs = "DELETE FROM alias_rc where aliasFk = $iAliasId";
     			if (!$mysqli->real_query($sSQLDeleteRCs)) {
     				$LOGGER->addLine('ERROR',"FUNCION: 'deleteAlias' " . $mysqli->error.' CONSULTA: '.$sSQLDeleteRCs );
     				$mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
      	 			return ("Error al intentar eliminar empresas de alias. $sSQLDeleteRCs");
     			}
     			////ELIMINO CONFIGURACION INICIAL/////////
     			$sSelectConfigDefault = "SELECT ORDER_ID as iOrderId FROM config_default WHERE FLOTA_ID = $iAliasId and ES_FLOTA = 4";
     			if (!$mysqli->real_query($sSelectConfigDefault)){
     				$LOGGER->addLine('ERROR',"FUNCION: 'deleteAlias' " . $mysqli->error.' CONSULTA: '.$sSelectConfigDefault );
     				$mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
      	 			return ("Error en consulta. $sSelectConfigDefault");
     			}
     			$idConfig = "";
     			$mysqli->store_result();
		     	if($result = $mysqli->query($sSelectConfigDefault)){
		     		while($obj = $result->fetch_object()) {
						$idConfig = $obj->iOrderId;
		    	 	}
		    	}
		    	$resultConfigDefault = true;
		    	if($idConfig!=""){
		    		$resultConfigDefault = cConfiguracion::deleteConfigDefault($idConfig);
		    	}
     			///////////////////////////////////////
     			////////////ELIMINO ALIASPHONE/////////
     			$mysqli->store_result();
     			$sSelectAliasPhone = "SELECT id as iOrderId FROM aliasesphone WHERE tablaId = $iAliasId and objetivo = 4";
     			if (!$mysqli->real_query($sSelectAliasPhone)){
     				$LOGGER->addLine('ERROR',"FUNCION: 'deleteAlias' " . $mysqli->error.' CONSULTA: '.$sSelectAliasPhone );
     				$mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
      	 			return ("Error en consulta. $sSelectAliasPhone.".mysqli_error( $mysqli ) );
     			}

     			$idAliasPhone = array();
     			$mysqli->store_result();
		     	if($result = $mysqli->query($sSelectAliasPhone)){
		     		while($obj = $result->fetch_object()) {
						$idAliasPhone = $obj->iOrderId;
		    	 	}
		    	}
		    	$resultAliasPhone = true;
		    	if($idAliasPhone){
			    	$resultAliasPhone = cConfiguracion::deleteAliasPhone($idAliasPhone);
		    	}
     			///////////////////////////////////////
     			///////ELIMINO PUNTOS//////////////////
     			$sSQLPuntosV = "DELETE FROM puntos_visibles WHERE CUENTA_ID = $iAliasId and ES_FLOTA = 4";
     			$mysqli->store_result();
     			if ( !$mysqli->real_query($sSQLPuntosV) ){
     				$LOGGER->addLine('ERROR',"FUNCION: 'deleteAlias' " . $mysqli->error.' CONSULTA: '.$sSQLPuntosV );
     				$mysqli->real_query("ROLLBACK"); //DESHAGO LOS CAMBIOS
      	 			return ("Error al intentar eliminar puntos visibles de alias. $sSQLPuntosV".mysqli_error( $mysqli ));
     			}
		    	$mysqli->store_result();
     			$sSQLPuntos = "DELETE FROM pumapuntos where FLOTA_ID = $iAliasId and ESFLOTA = 4";
     			if (!$mysqli->real_query($sSQLPuntos)){
     				$LOGGER->addLine('ERROR',"FUNCION: 'deleteAlias' " . $mysqli->error.' CONSULTA: '.$sSQLPuntos );
     				$mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
      	 			return ("Error al intentar eliminar puntos de alias. $sSQLPuntos");
     			}
     			//////////////////////////////////////
     			//////////ELIMINO GRUPOS//////////////
     			$sSelectGrupos="SELECT ORDER_ID as iOrderId FROM pumagrupos WHERE FLOTA_ID = $iAliasId and ESFLOTA = 4";
     			$mysqli->store_result();
     			if (!$mysqli->real_query($sSelectGrupos)){
     				$LOGGER->addLine('ERROR',"FUNCION: 'deleteAlias' " . $mysqli->error.' CONSULTA: '.$sSelectGrupos );
     				$mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
      	 			return ("Error en consulta . $sSelectGrupos".mysqli_error( $mysqli ));
     			}
     			$vIdsGrupos = array();
     			$mysqli->store_result();
		     	if($result = $mysqli->query($sSelectGrupos)){
		     		while($obj = $result->fetch_object()) {
						$vIdsGrupos[] = $obj->iOrderId;
		    	 	}
		    	}
	    		$resultGrupos = true;
		    	if($vIdsGrupos){
			    	$resultGrupos = cConfiguracion::deleteGrupos($vIdsGrupos);
		    	}
     			/////////////////////////////////
     			/////////ELIMINO ZONAS///////////
     			$sSelectZonas="SELECT ORDER_ID as iOrderId FROM pomapoligonos WHERE FLOTA_ID = $iAliasId and ESFLOTA = 4";
     			$mysqli->store_result();
     			if (!$mysqli->real_query($sSelectZonas)){
     				$LOGGER->addLine('ERROR',"FUNCION: 'deleteAlias' " . $mysqli->error.' CONSULTA: '.$sSelectZonas );
     				$mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
      	 			return ("Error en consulta---. $sSelectZonas".mysqli_error( $mysqli ));
     			}
     			$iIdsZonas = array();
     			$mysqli->store_result();
		     	if($result = $mysqli->query($sSelectZonas)){
		     		while($obj = $result->fetch_object()) {
						$iIdsZonas[] = $obj->iOrderId;
		    	 	}
		     	}
		     	$resultZonas = true;
		     	if($iIdsZonas){
		     		$resultZonas = cConfiguracion::deleteZonas($iIdsZonas, 4);
		     	}
				//////////////////////////////////////////
				///////ELIMINO REGLAS////////////////////
				$mysqli->store_result();
 				$sSelectReglas="SELECT id as iId FROM regla WHERE flotaID = $iAliasId and esFlota = 4";
     			if (!$mysqli->real_query($sSelectReglas)){
     				$LOGGER->addLine('ERROR',"FUNCION: 'deleteAlias' " . $mysqli->error.' CONSULTA: '.$sSelectReglas );
     				$mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
      	 			return ("Error en consulta---. $sSelectReglas".mysqli_error( $mysqli ));
     			}
     			$iIdsReglas = array();
     			$mysqli->store_result();
		     	if($result = $mysqli->query($sSelectReglas)){
		     		while($obj = $result->fetch_object()) {
						$iIdsReglas[] = $obj->iId;
		    	 	}
		    	}
		    	$resultReglas = true;
		    	if($iIdsReglas){
		    		$resultReglas = cConfiguracion::deleteReglas($iIdsReglas, 4);
		    	}

				//////////////////////////////////////////
				$mysqli->store_result();
				if(!$resultGrupos || !$resultZonas || !$resultReglas || !$resultConfigDefault || !$resultAliasPhone){
					$LOGGER->addLine('ERROR',"FUNCION: 'deleteAlias' " . mysqli_error( $mysqli ) );
					$mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
      	 			return ("Error en consulta.").mysqli_error( $mysqli );
				}

     		}
     	}

     	$mysqli->real_query("COMMIT");	//LA TRANSACCION FUE EXITOSA=>PERSISTO LOS CAMBIOS
	 	$mysqli->close();
     	return ('ok');

	}
	/**********************************************************************************************************/
    function blanquearAlias($selectedId) {
    	global $LOGGER;
		$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
     	if (mysqli_connect_errno()) {
     		$LOGGER->addLine('ERROR',"FUNCION: 'blanquearAlias' " .  mysqli_connect_error() );
       		return ("Error al conectarse a la DB.");
     	}
     	$SQLDELETE = "UPDATE aliases SET aliases.clave = '' WHERE aliases.id IN (" . $selectedId . ")";
     	if (!$mysqli->real_query($SQLDELETE)) {
     		$LOGGER->addLine('ERROR',"FUNCION: 'deleteAlias' " . $mysqli->error.' CONSULTA: '.$SQLDELETE );
      	 	return ("Error al intentar blanquear aliases.");
     	}
     	return ('ok');
	}

	/**********************************************************************************************************/
	function changeHistorico($configId, $clienteId, $esFlota, $newColor, $thickness, $verSentido, $velExceso, $filtroCero) //siendo clienteID el id de una flota o bien el Id de un Movil
	{
		global $LOGGER;
	 	$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
	     if (mysqli_connect_errno()){
	     	$LOGGER->addLine('ERROR',"FUNCION: 'changeHistorico' " .  mysqli_connect_error() );
	       	return ("No se pudo conectar a la DB.");
	     }
		 $SQLSELECT = "SELECT ORDER_ID as iOrderId, FLOTA_ID as iFlotaId, ES_FLOTA as iObjetivo FROM config_default WHERE FLOTA_ID = $clienteId and ES_FLOTA = $esFlota";
	     if($result = $mysqli->query($SQLSELECT)){
	     	while($obj = $result->fetch_object()) {
				$configId = $obj->iOrderId;
	     	}
	     }
		 if (($configId=='')||($configId==null)){ //ES UN INSERT
		 	$SQL = "INSERT INTO `config_default` (`FLOTA_ID`, `ES_FLOTA`, `HIS_color`, `HIS_thickness`, `HIS_sentido`, `HIS_exceso`, `HIS_filtrocero`) ";
			$SQL .= "VALUES (".$clienteId.", ".$esFlota.", ";
			//HISTORICO
			$SQL .= "'".$newColor."', ".$thickness.", ".$verSentido.", ".((trim($velExceso) == '') ? 0 : $velExceso).", ".$filtroCero;
			$SQL .= ");";
		 } else{
		 	$SQL = "UPDATE `config_default` SET ";
			$SQL .= "config_default.`HIS_color`='".$newColor."', ";
			$SQL .= "config_default.`HIS_thickness`=".$thickness.", ";
			$SQL .= "config_default.`HIS_sentido`=".$verSentido.", ";
			$SQL .= "config_default.`HIS_exceso`=".((trim($velExceso) == '') ? 0 : $velExceso).", ";
			$SQL .= "config_default.`HIS_filtrocero`=".$filtroCero;
			$SQL .= " WHERE config_default.`ORDER_ID` = ".$configId;
		 }
	
	     if (!$mysqli->real_query($SQL)){
	     	$LOGGER->addLine('ERROR',"FUNCION: 'changeHistorico' " . $mysqli->error.' CONSULTA: '.$SQL );
	       	return ("Se produjo un error en la DB al tratar de guardar la configuracion." . " " . $SQL . " " . mysql_error());
	     }
		return ('');
    }



	/**********************************************************************************************************/
	function changeEmailConfig($configId, $clienteId, $esFlota, $email) //siendo clienteID el id de una flota o bien el Id de un Movil
	{
		global $LOGGER;
	 	$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
	    if (mysqli_connect_errno()){
	     	$LOGGER->addLine('ERROR',"FUNCION: 'changeEmailConfig' " .  mysqli_connect_error() );
	       return ("No se pudo conectar a la DB.");
	    }
		$SQLSELECT = "SELECT ORDER_ID as iOrderId, FLOTA_ID as iFlotaId, ES_FLOTA as iObjetivo FROM config_default WHERE FLOTA_ID = $clienteId and ES_FLOTA = $esFlota";
	    if($result = $mysqli->query($SQLSELECT)){
	     	while($obj = $result->fetch_object()) {
				$configId = $obj->iOrderId;
	     	}
	    }
		if (($configId=='')||($configId==null)){ //ES UN INSERT
		 	$SQL = "INSERT INTO `config_default` (`FLOTA_ID`, `ES_FLOTA`, `emailAlertaEventos`) ";
			$SQL .= "VALUES (".$clienteId.", ".$esFlota.", ";
			//EMAIL
			$SQL .= "'".$email."'";
			$SQL .= ");";
		}else {
		 	$SQL = "UPDATE `config_default` SET ";
			$SQL .= "config_default.`emailAlertaEventos`='".$email."' ";
			$SQL .= " WHERE config_default.`ORDER_ID` = ".$configId;
		}

     	if (!$mysqli->real_query($SQL)){
     		$LOGGER->addLine('ERROR',"FUNCION: 'changeEmailConfig' " . $mysqli->error.' CONSULTA: '.$SQL );
     	  	return ("Se produjo un error en la DB al tratar de guardar la configuracion." . " " . $SQL . " " . mysql_error());
     	}
		return ('');
    }
    /**********************************************************************************************************/
	function saveOrUpdateMovilLbl($configId, $clienteId, $esFlota, $labelFMT, $labelFMTReduce, $timeOut, $tipoVista, $fuenteReduce, $radioReduce, $transparenciaReduce, $colorReduce) //siendo clienteID el id de una flota o bien el Id de un Movil
	{
		global $LOGGER;
	 $mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
     if (mysqli_connect_errno()){
     	$LOGGER->addLine('ERROR',"FUNCION: 'saveOrUpdateMovilLbl' " .  mysqli_connect_error() );
       return ("No se pudo conectar a la DB.");
     }

     $SQLSELECT = "SELECT ORDER_ID as iOrderId, FLOTA_ID as iFlotaId, ES_FLOTA as iObjetivo FROM config_default WHERE FLOTA_ID = $clienteId and ES_FLOTA = $esFlota";
     if($result = $mysqli->query($SQLSELECT)){
     	while($obj = $result->fetch_object()) {
			$configId = $obj->iOrderId;
     	}
     }
	 if(($configId=='')||($configId==null)){ //ES UN INSERT
	 	$SQL = "INSERT INTO `config_default` (`FLOTA_ID`, `ES_FLOTA`, `VEH_lblformat`, `CMD_timeout`, VEH_simpleview, VEH_lblmapformat, VEH_lblcolor, VEH_lblsize, VEH_radio, VEH_transparencia) ";
		$SQL .= "VALUES (".$clienteId.", ".$esFlota.", ";
		//VEHICULOS
		$SQL .= "'".$labelFMT."',".$timeOut. "," .$tipoVista . ",'" . $labelFMTReduce . "', '" . $colorReduce . "', " . $fuenteReduce . ", " . $radioReduce . ", '" . $transparenciaReduce . "'";
		$SQL .= ");";
	 }else{
	 	$SQL = "UPDATE `config_default` SET ";
		$SQL .= "config_default.`VEH_lblformat`='".$labelFMT."', ";
		$SQL .= "config_default.`VEH_lblmapformat`='".$labelFMTReduce."', ";
		$SQL .= "config_default.`VEH_simpleview`=".$tipoVista.", ";
		$SQL .= "config_default.`VEH_lblcolor`='".$colorReduce."', ";
		$SQL .= "config_default.`VEH_lblsize`=".$fuenteReduce.", ";
		$SQL .= "config_default.`VEH_radio`=".$radioReduce.", ";
		$SQL .= "config_default.`VEH_transparencia`='".$transparenciaReduce."', ";
		$SQL .= "config_default.`CMD_timeout`=".$timeOut;
		$SQL .= " WHERE config_default.`ORDER_ID` = ".$configId;
	 }

     if(!$mysqli->real_query($SQL)){
     	$LOGGER->addLine('ERROR',"FUNCION: 'saveOrUpdateMovilLbl' " . $mysqli->error.' CONSULTA: '.$SQL );
       	return ("Se produjo un error en la DB al tratar de guardar la configuracion." . $SQL);
     }
	return ('');
    }
	/**********************************************************************************************************/
	function saveOrUpdateFijoLbl($configId, $clienteId, $esFlota, $labelFMT, $labelFMTReduce, $timeOut, $tipoVista, $fuenteReduce, $radioReduce, $transparenciaReduce, $colorReduce) //siendo clienteID el id de una flota o bien el Id de un Movil
	{
		global $LOGGER;
	 $mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
     if (mysqli_connect_errno()){
     	$LOGGER->addLine('ERROR',"FUNCION: 'saveOrUpdateFijoLbl' " .  mysqli_connect_error() );
       return ("No se pudo conectar a la DB.");
     }
	 $SQLSELECT = "SELECT ORDER_ID as iOrderId, FLOTA_ID as iFlotaId, ES_FLOTA as iObjetivo FROM config_default WHERE FLOTA_ID = $clienteId and ES_FLOTA = $esFlota";
     if($result = $mysqli->query($SQLSELECT)){
     	while($obj = $result->fetch_object()) {
			$configId = $obj->iOrderId;
     	}
     }
	 if (($configId=='')||($configId==null)){ //ES UN INSERT
	 	$SQL = "INSERT INTO `config_default` (`FLOTA_ID`, `ES_FLOTA`, `FIJ_lblformat`, FIJ_simpleview, FIJ_lblmapformat, FIJ_lblcolor, FIJ_lblsize, FIJ_radio, FIJ_transparencia) ";
		$SQL .= "VALUES (".$clienteId.", ".$esFlota.", ";
		//FIJOS
		$SQL .= "'".$labelFMT."',".$tipoVista . ",'" . $labelFMTReduce . "', '" . $colorReduce . "', " . $fuenteReduce . ", " . $radioReduce . ", '" . $transparenciaReduce . "'";
		$SQL .= ");";
	 } else{
	 	$SQL = "UPDATE `config_default` SET ";
		$SQL .= "config_default.`FIJ_lblformat`='".$labelFMT."', ";
		$SQL .= "config_default.`FIJ_lblmapformat`='".$labelFMTReduce."', ";
		$SQL .= "config_default.`FIJ_simpleview`=".$tipoVista.", ";
		$SQL .= "config_default.`FIJ_lblcolor`='".$colorReduce."', ";
		$SQL .= "config_default.`FIJ_lblsize`=".$fuenteReduce.", ";
		$SQL .= "config_default.`FIJ_radio`=".$radioReduce.", ";
		$SQL .= "config_default.`FIJ_transparencia`='".$transparenciaReduce."' ";
		$SQL .= " WHERE config_default.`ORDER_ID` = ".$configId;
	 }

     	if (!$mysqli->real_query($SQL)){
     		$LOGGER->addLine('ERROR',"FUNCION: 'saveOrUpdateFijoLbl' " . $mysqli->error.' CONSULTA: '.$SQL );
       		return ("Se produjo un error en la DB al tratar de guardar la configuracion." . $SQL);
     	}
		return ('');
    }
	/**********************************************************************************************************/
	function getConfig($cuentaId, $objetivo) //siendo clienteID el id de una cuenta 
	{
		global $LOGGER;
	 $mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
     if (mysqli_connect_errno()){
     	$LOGGER->addLine('ERROR',"FUNCION: 'getConfig' " .  mysqli_connect_error() );
       printf("Conexion fallida: %s\n", mysqli_connect_error());
       exit();
     }

	 $SQL = "SELECT * FROM `config_default` WHERE config_default.FLOTA_ID = ".$cuentaId . " AND ES_FLOTA=" . $objetivo;

	 if (!$mysqli->real_query($SQL)){
	 	$LOGGER->addLine('ERROR',"FUNCION: 'getConfig' " . $mysqli->error.' CONSULTA: '.$SQL );
       	printf("Query Invalido: %s\nWhole query: %s\n", $mysqli->error, $SQL);
       	exit();
     }
	 return cConfiguracion::getResultado($mysqli);
    }

	/**********************************************************************************************************/
	function changePuntos($cuenta, $esFlota, $puntosId){
		global $LOGGER;
	 	$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
	    if (mysqli_connect_errno()){
	      	$LOGGER->addLine('ERROR',"FUNCION: 'changePuntos' " .  mysqli_connect_error() );
	      	return("Conexion fallida");
	    }
	  	//PRIMERO ELIMINO tODOS LOS PUNTOS VISIBLES DE ESA CUENTA
	  	$SQL = "DELETE FROM puntos_visibles WHERE puntos_visibles.CUENTA_ID = ".$cuenta." and puntos_visibles.ES_FLOTA = ".$esFlota;

	  	$mysqli->real_query("BEGIN"); //INICIALIZO LA TRANSACCION
	  	if (!$mysqli->real_query($SQL)){
	  		$LOGGER->addLine('ERROR',"FUNCION: 'changePuntos' " . $mysqli->error.' CONSULTA: '.$SQL );
      	  	$mysqli->real_query("ROLLBACK");
      	  	return ("Se produjo un error tratando de eliminar la configuracion de puntos visibles anterior");
     	}

	  	//PERSISTO LAS NUEVAS RELACIONES
	  	if (trim($puntosId)!=''){
	  	  $ids = split(',',$puntosId);
	  	  $SQL = "INSERT INTO `puntos_visibles` (`CUENTA_ID`, `ES_FLOTA`, `PUNTO_ID`) VALUES ";
		  for($i = 0;  $i < count($ids); $i++ ){
		  	$SQL .= "(".$cuenta.",".$esFlota.",".$ids[$i].")";
			if ($i<(count($ids)-1))
				$SQL.=",";
			}
		  $SQL .= ";";
		  if (!$mysqli->real_query($SQL)){
		  	$LOGGER->addLine('ERROR',"FUNCION: 'changePuntos' " . $mysqli->error.' CONSULTA: '.$SQL );
      	    $mysqli->real_query("ROLLBACK");
      	    return ("Se produjo un error tratando de insertar la nueva configuracion de puntos visibles");
     	  }
	  }
	  $mysqli->real_query("COMMIT");
	  $mysqli->close();
	  return ('');
	}

	/**********************************************************************************************************/
	function changeZonas($cuenta, $esFlota, $zonasId){
		global $LOGGER;
	  $mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
      if (mysqli_connect_errno()){
      	$LOGGER->addLine('ERROR',"FUNCION: 'changeZonas' " .  mysqli_connect_error() );
        return("Conexion fallida");
      }

	  //PRIMERO ELIMINO TODAS LAS ZONAS VISIBLES DE ESA CUENTA
	  $SQL = "DELETE FROM zonas_visibles WHERE zonas_visibles.CUENTA_ID = ".$cuenta." and zonas_visibles.ES_FLOTA = ".$esFlota;
	  $mysqli->real_query("BEGIN"); //INICIALIZO LA TRANSACCION
	  if (!$mysqli->real_query($SQL)){
	  		$LOGGER->addLine('ERROR',"FUNCION: 'changeZonas' " . $mysqli->error.' CONSULTA: '.$SQL );
      	  	$mysqli->real_query("ROLLBACK");
      	  	return ("Se produjo un error tratando de eliminar la configuracion de zonas visibles anterior");
     	}

	  //PERSISTO LAS NUEVAS RELACIONES

	  if (trim($zonasId)!=''){
	  	  $ids = split(',',$zonasId);
	  	  $SQL = "INSERT INTO `zonas_visibles` (`CUENTA_ID`, `ES_FLOTA`, `ZONA_ID`) VALUES ";
		  for($i = 0;  $i < count($ids); $i++ ){
		  	$SQL .= "(".$cuenta.",".$esFlota.",".$ids[$i].")";
			if ($i<(count($ids)-1))
				$SQL.=",";
			}
		  $SQL .= ";";
		  if (!$mysqli->real_query($SQL)){
		  	$LOGGER->addLine('ERROR',"FUNCION: 'changeZonas' " . $mysqli->error.' CONSULTA: '.$SQL );
      	    $mysqli->real_query("ROLLBACK");
      	    return ("Se produjo un error tratando de insertar la nueva configuracion de zonas visibles");
     	  }
	  }

	  $mysqli->real_query("COMMIT");
	  $mysqli->close();
	  return ('');
	}

	/**********************************************************************************************************/
	function getZonasVisibles($cuentaId, $esFlota) //siendo clienteID el id de una flota o bien el Id de un Movil
	{
		global $LOGGER;
	 $mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
     if (mysqli_connect_errno()){
     	$LOGGER->addLine('ERROR',"FUNCION: 'getZonasVisibles' " .  mysqli_connect_error() );
       	printf("Conexion fallida: %s\n", mysqli_connect_error());
       	exit();
     }

	 $SQL = "SELECT * FROM `zonas_visibles` WHERE zonas_visibles.`CUENTA_ID` = ".$cuentaId." and zonas_visibles.`ES_FLOTA` =".$esFlota;

	 if (!$mysqli->real_query($SQL)){
	 	$LOGGER->addLine('ERROR',"FUNCION: 'getZonasVisibles' " . $mysqli->error.' CONSULTA: '.$SQL );
       	printf("Query Invalido: %s\nWhole query: %s\n", $mysqli->error, $SQL);
       	exit();
     }
	 return cConfiguracion::getResultado($mysqli);
    }

	/**********************************************************************************************************/
	function getPuntosVisibles($cuentaId, $esFlota) //siendo clienteID el id de una flota o bien el Id de un Movil
	{
		 global $LOGGER;
		 $mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
	     if (mysqli_connect_errno()){
	     	$LOGGER->addLine('ERROR',"FUNCION: 'getPuntosVisibles' " .  mysqli_connect_error() );
	       	printf("Conexion fallida: %s\n", mysqli_connect_error());
	       	exit();
	     }
		 $SQL = "SELECT * FROM `puntos_visibles` WHERE puntos_visibles.`CUENTA_ID` = ".$cuentaId." and puntos_visibles.`ES_FLOTA` =".$esFlota;
		 if (!$mysqli->real_query($SQL)){
		 	$LOGGER->addLine('ERROR',"FUNCION: 'getPuntosVisibles' " . $mysqli->error.' CONSULTA: '.$SQL );
	       	printf("Query Invalido: %s\nWhole query: %s\n", $mysqli->error, $SQL);
	       	exit();
	     }
		 return cConfiguracion::getResultado($mysqli);
    }

	/**************************************************************************************************************/

    function eliminarEventosMoviles($cuentasId){
    	global $LOGGER;
     	$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
	    if (mysqli_connect_errno()){
	    	$LOGGER->addLine('ERROR',"FUNCION: 'eliminarEventosMoviles' " .  mysqli_connect_error() );
	       	return (false);
	    }
   		$SQL  = "DELETE FROM eventos_visibles where CUENTA_ID IN($cuentasId)";
	    if (!$mysqli->real_query($SQL)){
	       $LOGGER->addLine('ERROR',"FUNCION: 'eliminarEventosMoviles' " . $mysqli->error.' CONSULTA: '.$SQL);
		   $mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
	       return (false);
	    }
   		$SQL  = "DELETE FROM eventos_punto_seguro where CUENTA_ID IN($cuentasId)";
	    if (!$mysqli->real_query($SQL)){
	       $LOGGER->addLine('ERROR',"FUNCION: 'eliminarEventosMoviles' " . $mysqli->error.' CONSULTA: '.$SQL);
		   $mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
	       return (false);
	    }
   		$SQL  = "DELETE FROM eventos_mail where CUENTA_ID IN($cuentasId)";
	    if (!$mysqli->real_query($SQL)){
	       $LOGGER->addLine('ERROR',"FUNCION: 'eliminarEventosMoviles' " . $mysqli->error.' CONSULTA: '.$SQL);
		   $mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
	       return (false);
	    }
   		$SQL  = "UPDATE abmacodigos SET ALERTA_MAIL_EVENTOS = null WHERE ORDER_ID IN($cuentasId)";
	    if (!$mysqli->real_query($SQL)){
	       $LOGGER->addLine('ERROR',"FUNCION: 'eliminarEventosMoviles' " . $mysqli->error.' CONSULTA: '.$SQL);
		   $mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
	       return (false);
	    }
     	$mysqli->close();
	    return true;
     }

	function changeEventsByAllMoviles($cuentas, $esFlota, $selectedId, $deselectedId, $tipoTabla, $tablaId){
		global $LOGGER;
	  	$nombreTabla = "";
		$objetivo = $esFlota;
	  	if ($tipoTabla == 1){ $nombreTabla = "eventos_visibles";$esFlota = 'null';}
	  	if ($tipoTabla == 3){ $nombreTabla = "eventos_punto_seguro";$esFlota = 'null';}
	  	if ($tipoTabla == 4){ $nombreTabla = "eventos_mail";$esFlota = 'null';}
	  	$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
      	if (mysqli_connect_errno()){
      		$LOGGER->addLine('ERROR',"FUNCION: 'changeEventsByAllMoviles' " .  mysqli_connect_error() );
        	return("Conexion fallida");
      	}
      	$listaMoviles	= explode(",",$cuentas);
      	foreach($listaMoviles as $cuenta){
		  //PRIMERO ELIMINO TODAS LAS TUPLAS
		  $SQL="";
		  if ((trim($selectedId)!='')||(trim($deselectedId)!='')){
		  	$SQL = "DELETE FROM $nombreTabla WHERE $nombreTabla.CUENTA_ID = ".$cuenta."";
			$SQL.=" AND $nombreTabla.EVENTO_ID IN ($selectedId";
			if ((trim($selectedId)!='')&&(trim($deselectedId)!=''))
				$SQL.=", ";
			$SQL.="$deselectedId)";
		  }
		  $mysqli->real_query("BEGIN"); //INICIALIZO LA TRANSACCION
		  if (($SQL!='')&&(!$mysqli->real_query($SQL))){
		  		$LOGGER->addLine('ERROR',"FUNCION: 'changeEventsByAllMoviles' " . $mysqli->error.' CONSULTA: '.$SQL);
	      	  $mysqli->real_query("ROLLBACK");
	      	  return ("Se produjo un error tratando de eliminar la configuracion de eventos visibles anterior");
	      }
		  //PERSISTO LAS NUEVAS RELACIONES
		  if (trim($selectedId)!='') {
				$coma = "";
		  	  	$ids = split(',',$selectedId);
		  	  	$SQL = "INSERT INTO $nombreTabla (`CUENTA_ID`, `ES_FLOTA`, `EVENTO_ID`, `TIPO_ALERTA`) VALUES ";
			  	for($i = 0;  $i < count($ids); $i++ ){
				  	$SQL .= "(".$cuenta.",".$esFlota.",".$ids[$i].",1)";
					if ($i<(count($ids)-1))
						$SQL.=",";
				}
			  	$SQL .= ";";
			  	if (!$mysqli->real_query($SQL)){
			  		$LOGGER->addLine('ERROR',"FUNCION: 'changeEventsByAllMoviles' " . $mysqli->error.' CONSULTA: '.$SQL);
	      	    	$mysqli->real_query("ROLLBACK");
	      	    	return ("Se produjo un error tratando de insertar la nueva configuracion de eventos visibles (TIPO_ALERTA=1)");
	     	  	}
		  }
		  if (trim($deselectedId)!=''){
		  	  $ids = split(',',$deselectedId);
		  	  $SQL = "INSERT INTO $nombreTabla (`CUENTA_ID`, `ES_FLOTA`, `EVENTO_ID`, `TIPO_ALERTA`) VALUES ";
			  for($i = 0;  $i < count($ids); $i++ ){
			  	$SQL .= "(".$cuenta.",".$esFlota.",".$ids[$i].",0)";
				if ($i<(count($ids)-1))
					$SQL.=",";
			  }
			  $SQL .= ";";
			  if (!$mysqli->real_query($SQL)){
			  	$LOGGER->addLine('ERROR',"FUNCION: 'changeEventsByAllMoviles' " . $mysqli->error.' CONSULTA: '.$SQL);
	      	    $mysqli->real_query("ROLLBACK");
	      	    return ("Se produjo un error tratando de insertar la nueva configuracion de eventos visibles (TIPO_ALERTA=0)");
	     	  }
		  }
      }
	  $mysqli->real_query("COMMIT");
	  $mysqli->close();
	  return ('');
	}
	function changeEventos($cuenta, $esFlota, $selectedId, $deselectedId, $tipoTabla, $tablaId){
		global $LOGGER;
	  $nombreTabla = "";
	  $objetivo = $esFlota;
	  if ($tipoTabla == 1){ $nombreTabla = "eventos_visibles";$esFlota = 'null';}
	  if ($tipoTabla == 2) $nombreTabla = "eventos_universo";
	  if ($tipoTabla == 3){ $nombreTabla = "eventos_punto_seguro";$esFlota = 'null';}
	  if ($tipoTabla == 4){ $nombreTabla = "eventos_mail";$esFlota = 'null';}
	  $mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
      if (mysqli_connect_errno()){
      	$LOGGER->addLine('ERROR',"FUNCION: 'changeEventos' " .  mysqli_connect_error() );
        return("Conexion fallida");
      }

	  //PRIMERO ELIMINO TODAS LAS TUPLAS
	  $SQL="";
	  if ((trim($selectedId)!='')||(trim($deselectedId)!='')){
	  	$SQL = "DELETE FROM $nombreTabla WHERE $nombreTabla.CUENTA_ID = ".$cuenta."";
	  	if($tipoTabla==2){
	  		$SQL.=" and $nombreTabla.ES_FLOTA = ".$esFlota;
	  	}
		$SQL.=" AND $nombreTabla.EVENTO_ID IN ($selectedId";

		if ((trim($selectedId)!='')&&(trim($deselectedId)!=''))
			$SQL.=", ";
		$SQL.="$deselectedId)";
	  }
	  $mysqli->real_query("BEGIN"); //INICIALIZO LA TRANSACCION

	  if (($SQL!='')&&(!$mysqli->real_query($SQL))){
	  	  $LOGGER->addLine('ERROR',"FUNCION: 'changeEventos' " . $mysqli->error.' CONSULTA: '.$SQL);
      	  $mysqli->real_query("ROLLBACK");
      	  return ("Se produjo un error tratando de eliminar la configuracion de eventos visibles anterior");
      }
	  //PERSISTO LAS NUEVAS RELACIONES
	  if (trim($selectedId)!=''){
	  	  $ids 	= split(',',$selectedId);
	  	  $coma = "";
	  	  $SQL = "INSERT INTO $nombreTabla (`CUENTA_ID`, `ES_FLOTA`, `EVENTO_ID`, `TIPO_ALERTA`) VALUES ";
		  for($i = 0;  $i < count($ids); $i++ ){
			$SQL .= "(".$cuenta.",".$esFlota.",".$ids[$i].",1)";
			if ($i<(count($ids)-1))
				$SQL.=",";
		  }
		  $SQL .= ";";
		  if (!$mysqli->real_query($SQL)){
		  	$LOGGER->addLine('ERROR',"FUNCION: 'changeEventos' " . $mysqli->error.' CONSULTA: '.$SQL);
      	    $mysqli->real_query("ROLLBACK");
      	    return ("Se produjo un error tratando de insertar la nueva configuracion de eventos visibles (TIPO_ALERTA=1)");
     	  }
	  }

	  if (trim($deselectedId)!=''){
	  	  $ids = split(',',$deselectedId);
	  	  $SQL = "INSERT INTO $nombreTabla (`CUENTA_ID`, `ES_FLOTA`, `EVENTO_ID`, `TIPO_ALERTA`) VALUES ";
		  for($i = 0;  $i < count($ids); $i++ ){
		  	$SQL .= "(".$cuenta.",".$esFlota.",".$ids[$i].",0)";
			if ($i<(count($ids)-1))
				$SQL.=",";
		  }
		  $SQL .= ";";
		  if (!$mysqli->real_query($SQL)){
		  	$LOGGER->addLine('ERROR',"FUNCION: 'changeEventos' " . $mysqli->error.' CONSULTA: '.$SQL);
      	    $mysqli->real_query("ROLLBACK");
      	    return ("Se produjo un error tratando de insertar la nueva configuracion de eventos visibles (TIPO_ALERTA=0)");
     	  }
	  }

	  $mysqli->real_query("COMMIT");
	  $mysqli->close();

	  return ('');
	}

	/**********************************************************************************************************/
	function getEventosVisibles($cuentaId, $esFlota) //siendo cuentaId el id de una flota o bien el Id de un Movil
	{
		global $LOGGER;
	 $mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
     if (mysqli_connect_errno()){
     	$LOGGER->addLine('ERROR',"FUNCION: 'getEventosVisibles' " .  mysqli_connect_error() );
       	printf("Conexion fallida: %s\n", mysqli_connect_error());
       	exit();
     }

	 $SQL = "SELECT * FROM `eventos_visibles` WHERE eventos_visibles.`CUENTA_ID` = ".$cuentaId." and eventos_visibles.`ES_FLOTA` =".$esFlota." and eventos_visibles.`TIPO_ALERTA` = 1'";

	 if (!$mysqli->real_query($SQL)){
	 	$LOGGER->addLine('ERROR',"FUNCION: 'getEventosVisibles' " . $mysqli->error.' CONSULTA: '.$SQL);
       	printf("Query Invalido: %s\nWhole query: %s\n", $mysqli->error, $SQL);
       	exit();
     }
	 return cConfiguracion::getResultado($mysqli);
    }
    /**********************************************************************************************************/
    function deleteResoluciones($selectedId) {
    	global $LOGGER;
		$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
     	if (mysqli_connect_errno()) {
     		$LOGGER->addLine('ERROR',"FUNCION: 'deleteResoluciones' " .  mysqli_connect_error() );
       		return ("Error al conectarse a la DB.");
     	}
     	$SQLDELETE = "DELETE FROM resolucionrapida where resolucionrapida.id IN (" . $selectedId . ")";
     	if (!$mysqli->real_query($SQLDELETE)) {
     		$LOGGER->addLine('ERROR',"FUNCION: 'deleteResoluciones' " . $mysqli->error.' CONSULTA: '.$SQLDELETE);
      	 	return ("Error al intentar eliminar resoluciones rapidas.");
     	}
     	return ('ok');

	}
	/**********************************************************************************************************/
    function saveOrUpdateResolucion($id, $nombre, $descripcion, $cuentaId, $esFlota) {
    	global $LOGGER;
    	$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
     	if (mysqli_connect_errno()) {
     		$LOGGER->addLine('ERROR',"FUNCION: 'saveOrUpdateResolucion' " .  mysqli_connect_error() );
       		return ("Error al conectarse a la DB.");
     	}
    	if (trim($id) == '') {
    		$SQL = "INSERT INTO resolucionrapida (cuentaId, esFlota, nombre, descripcion) " .
    			   "VALUES (" . $cuentaId . "," . $esFlota . ",'" . $nombre . "','" . $descripcion . "')";
    	} else {
    		$SQL = "UPDATE resolucionrapida SET nombre = '" . $nombre . "',
    										    descripcion = '" . $descripcion . "'" .
    		       " WHERE id = " . $id;
    	}
    	if (!$mysqli->real_query($SQL)) {
    		$LOGGER->addLine('ERROR',"FUNCION: 'saveOrUpdateResolucion' " . $mysqli->error.' CONSULTA: '.$SQL);
      	 	return ("Error al intentar salvar resolucion rapida." . $SQL);
     	}
     	return ('ok');
    }
  	/**********************************************************************************************************/
    function deleteComandos($selectedId) {
    	global $LOGGER;
		$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
     	if (mysqli_connect_errno()) {
     		$LOGGER->addLine('ERROR',"FUNCION: 'deleteComandos' " .  mysqli_connect_error() );
       		return ("Error al conectarse a la DB.");
     	}
     	$SQLDELETE = "DELETE FROM comandos_cliente where comandos_cliente.ORDER_ID IN (" . $selectedId . ")";
     	if (!$mysqli->real_query($SQLDELETE)) {
     		$LOGGER->addLine('ERROR',"FUNCION: 'deleteComandos' " . $mysqli->error.' CONSULTA: '.$SQLDELETE);
      	 	return ("Error al intentar eliminar resoluciones rapidas.");
     	}
     	return ('ok');

	}
    /**********************************************************************************************************/
    function saveOrUpdateComando($id, $comando, $descripcion, $cuentaId, $esFlota) {
    	global $LOGGER;
    	$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
     	if (mysqli_connect_errno()) {
     		$LOGGER->addLine('ERROR',"FUNCION: 'saveOrUpdateComando' " .  mysqli_connect_error() );
       		return ("Error al conectarse a la DB.");
     	}
    	if (trim($id) == '') {
    		$SQL = "INSERT INTO comandos_cliente (CUENTA_ID, OBJETIVO, COMANDO, DESCRIPCION) " .
    			   "VALUES (" . $cuentaId . "," . $esFlota . ",'" . $comando . "','" . $descripcion . "')";
    	} else {
    		$SQL = "UPDATE comandos_cliente SET COMANDO = '" . $comando . "',
    										    DESCRIPCION = '" . $descripcion . "'" .
    		       " WHERE ORDER_ID = " . $id;
    	}
    	if (!$mysqli->real_query($SQL)) {
    		$LOGGER->addLine('ERROR',"FUNCION: 'saveOrUpdateComando' " . $mysqli->error.' CONSULTA: '.$SQL);
      	 	return ("Error al intentar salvar comando personalizado." . $SQL);
     	}
     	return ('ok');
    }
	/**********************************************************************************************************/
	function getAliasPhone($cuentaId, $objetivo) {
	 	global $LOGGER;
	 	$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
     	if (mysqli_connect_errno()) {
     		$LOGGER->addLine('ERROR',"FUNCION: 'getAliasPhone' " .  mysqli_connect_error() );
       		return ("Error al conectarse a la DB.");
       		exit();
     	}
     	$SQL  = "SELECT * FROM aliasesphone ap";
        $SQL .= " WHERE ap.tablaId = " . $cuentaId . " AND ap.objetivo=" . $objetivo;
     	if (!$mysqli->real_query($SQL)) {
     		$LOGGER->addLine('ERROR',"FUNCION: 'getAliasPhone' " .  $mysqli->error.' CONSULTA: '.$SQL);
       		return ("Error al cargar el usuario mobile: " . $SQL);
       		exit();
     	}
     	return cConfiguracion::getResultado($mysqli);
     }
     /**********************************************************************/
     function saveOrUpdateAliasPhone($cuenta, $objetivo, $alias, $zoom, $maptype, $changePass, $clave) {
     	global $LOGGER;
     	$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
     	if (mysqli_connect_errno()) {
     		$LOGGER->addLine('ERROR',"FUNCION: 'saveOrUpdateAliasPhone' " .  mysqli_connect_error() );
       		return ("Error al conectarse a la DB.");
     	}
     	$SQL  = "SELECT ap.id FROM aliasesphone ap";
        $SQL .= " WHERE ap.alias = '" . $alias ."' AND NOT(ap.tablaId = " . $cuenta . " AND ap.objetivo=" . $objetivo .")";

     	if (!$mysqli->real_query($SQL)) {
     		$LOGGER->addLine('ERROR',"FUNCION: 'saveOrUpdateAliasPhone' " .  $mysqli->error.' CONSULTA: '.$SQL);
     		return ("Error al ejecutar la consulta. No se pudo verificar duplicidad de alias.");
     	}

     	$resultado = cConfiguracion::getResultado($mysqli);
     	if ($resultado->cantidad() > 0) {
     		return ("Ya existe un ususario con ese alias. Escoja otro y reintente.");
     	}

     	$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
     	if (mysqli_connect_errno()) {
     		$LOGGER->addLine('ERROR',"FUNCION: 'saveOrUpdateAliasPhone' " . mysqli_connect_errno() );
       		return ("Error al conectarse a la DB.");
     	}
     	$SQL  = "SELECT ap.id FROM aliasesphone ap";
        $SQL .= " WHERE ap.tablaId = " . $cuenta . " AND ap.objetivo=" . $objetivo;
     	if (!$mysqli->real_query($SQL)) {
     		$LOGGER->addLine('ERROR',"FUNCION: 'saveOrUpdateAliasPhone' " .  $mysqli->error.' CONSULTA: '.$SQL);
       		return ("Error al cargar el usuario mobile: " . $SQL);
     	}
     	$claveEncriptada = strtoupper(md5($clave));
     	$resultado = cConfiguracion::getResultado($mysqli);
     	if ($resultado->cantidad() == 0) {
     		if ($changePass == false) {
     			return "Debe especificar un password.";
     		}
     		$SQLFields 	= "";
     		$SQLValue	= "";
     		if($zoom != ""){
     			$SQLFields .= ",zoom";
     			$SQLValue  .= ",$zoom";
     		}
     		if($maptype != ""){
     			$SQLFields .= ",maptype";
     			$SQLValue  .= ",'$maptype'";
     		}
     		$SQL  =  "INSERT INTO aliasesphone (tablaId, objetivo, alias, clave $SQLFields)";
			$SQL .=  " VALUES (" . $cuenta ."," .$objetivo . ",'" . $alias . "','" . $claveEncriptada. "' $SQLValue )";
     	}else{
     		$SQL  =  "UPDATE aliasesphone ap SET ap.alias = '" . $alias ."'";
     		if ($objetivo != 1) {
     			$SQL .= ", ap.zoom = " . $zoom . ", ap.maptype = '" . $maptype . "'";
     		}
     		if ($changePass == true) {
     			$SQL .= ", ap.clave ='" . $claveEncriptada. "'";
     		}
     		$SQL .= " WHERE ap.tablaId = " . $cuenta . " AND ap.objetivo=" . $objetivo;
     	}
     	$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
     	if (mysqli_connect_errno()) {
     		$LOGGER->addLine('ERROR',"FUNCION: 'saveOrUpdateAliasPhone' " .  mysqli_connect_error() );
       		return ("Error al conectarse a la DB.");
     	}
     	if (!$mysqli->real_query($SQL)) {
     		$LOGGER->addLine('ERROR',"FUNCION: 'saveOrUpdateAliasPhone' " .  $mysqli->error.' CONSULTA: '.$SQL);
       		return ("Error al intentar salvar el usuario mobile: " . $SQL);
       		exit();
     	}
     	return ("ok");
     }
     /**********************************************************************/
     /**
      * Elimina zonas y sus referencias
      * @param $iIds
      * @return boolean
      */
     function deleteZonas($iIds,$iObjetivo=null){
     	global $LOGGER;
		 $mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
	     if (mysqli_connect_errno()){
	     	$LOGGER->addLine('ERROR',"FUNCION: 'deleteZonas' " .  mysqli_connect_error() );
	       return (false);
	     }
		 if (($iIds!=null)and($iIds!='')){
		 	$SQL = "DELETE FROM porlpoligonos WHERE porlpoligonos.`ORDER_RL` IN  (".implode(',',$iIds).")";
		 }
		 $mysqli->real_query("BEGIN"); //INICIALIZO LA TRANSACCION
		 $mysqli->store_result();
	     if (!$mysqli->real_query($SQL)){
	     	$LOGGER->addLine('ERROR',"FUNCION: 'deleteZonas' " .  $mysqli->error.' CONSULTA: '.$SQL);
		   	$mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
	       	return (false);
	     }

		 if(($iIds!=null)and($iIds!='')){
		 	$SQL = "DELETE FROM pomapoligonos WHERE pomapoligonos.`ORDER_ID` IN  (".implode(',',$iIds).")";
		 }
		 $mysqli->store_result();
		 if(!$mysqli->real_query($SQL)){
		 	$LOGGER->addLine('ERROR',"FUNCION: 'deleteZonas' " .  $mysqli->error.' CONSULTA: '.$SQL);
		   	$mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
	       	return (false);
	     }

		 if(($iIds!=null)and($iIds!='')){
		 	$SQL = "DELETE FROM zonas_visibles WHERE `ZONA_ID` IN  (".implode(',',$iIds).") ";
		 	if($iObjetivo){
		 		$SQL.=" and ES_FLOTA = $iObjetivo";
		 	}
		 }
		 $mysqli->store_result();
		 if(!$mysqli->real_query($SQL)){
		 	$LOGGER->addLine('ERROR',"FUNCION: 'deleteZonas' " .  $mysqli->error.' CONSULTA: '.$SQL);
		   	$mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
	       	return (false);
	     }

		 $mysqli->real_query("COMMIT");	//LA TRANSACCION FUE EXITOSA=>PERSISTO LOS CAMBIOS
		 $mysqli->close();
	     return (true);
     }
     /**
      * Elimina todas las reglas de la base de datos que esten en el array de Ids y retorna True en caso de exito
      * @param $Ids
      * @return boolean
      */
	function deleteReglas($Ids){
		global $LOGGER;
		 $mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
	     if (mysqli_connect_errno()){
	     	$LOGGER->addLine('ERROR',"FUNCION: 'deleteReglas' " .  mysqli_connect_error() );
	       	return (false);
	     }
		 if (($Ids!=null)and($Ids!='')){
		 	//FRANJAHORARIA
			$SQL = "DELETE FROM `franjahoraria` WHERE franjahoraria.`REGLAFK` IN  (".implode(',',$Ids).")";
		 }
		 $mysqli->store_result();
		 $mysqli->real_query("BEGIN"); //INICIALIZO LA TRANSACCION
	     if (!$mysqli->real_query($SQL)){
	     	$LOGGER->addLine('ERROR',"FUNCION: 'deleteReglas' " .  $mysqli->error.' CONSULTA: '.$SQL);
		   	$mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
	       	return (false);
	     }

		 if (($Ids!=null)and($Ids!='')){
		    //REGLAS
		 	$SQL = "DELETE FROM `regla_movil` WHERE `reglaFk` IN  (".implode(',',$Ids).")";
		 }
		 $mysqli->store_result();
		 if (!$mysqli->real_query($SQL)){
		 	$LOGGER->addLine('ERROR',"FUNCION: 'deleteReglas' " .  $mysqli->error.' CONSULTA: '.$SQL);
		   	$mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
	       	return (false);
	     }

		 if (($Ids!=null)and($Ids!='')){
		    //REGLAS
		 	$SQL = "DELETE FROM `regla` WHERE regla.`id` IN  (".implode(',',$Ids).")";
		 }
		 $mysqli->store_result();
		 if (!$mysqli->real_query($SQL)){
		 	$LOGGER->addLine('ERROR',"FUNCION: 'deleteReglas' " .  $mysqli->error.' CONSULTA: '.$SQL);
		   $mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
	       return (false);
	     }

		 $mysqli->real_query("COMMIT");	//LA TRANSACCION FUE EXITOSA=>PERSISTO LOS CAMBIOS
		 $mysqli->close();
	     return (true);
    }
    /**
     * Elimina todos los grupos y sus puntos de la base de datos que esten en el array de Ids y retorna True en caso de exito
     *
     */
	 function deleteGrupos($Ids){
	 	global $LOGGER;
		 $mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
	     if (mysqli_connect_errno()){
	     	$LOGGER->addLine('ERROR',"FUNCION: 'deleteGrupos' " .  mysqli_connect_error() );
	       	return (false);
	     }
		 if (($Ids!=null)and($Ids!='')){
		 	$SQL = "DELETE FROM grupo_punto WHERE grupo_punto.`GRUPO_ID` IN  (".implode(',',$Ids).")";
		 }
		 $mysqli->store_result();
		 $mysqli->real_query("BEGIN"); //INICIALIZO LA TRANSACCION
	     if (!$mysqli->real_query($SQL)){
	     	$LOGGER->addLine('ERROR',"FUNCION: 'deleteGrupos' " .  $mysqli->error.' CONSULTA: '.$SQL);
		   	$mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
	       	return (false);
	     }

		 if (($Ids!=null)and($Ids!='')){
		 	$SQL = "DELETE FROM pumagrupos WHERE pumagrupos.`ORDER_ID` IN  (".implode(',',$Ids).")";
		 }
		 $mysqli->store_result();
		 if (!$mysqli->real_query($SQL)){
		 	$LOGGER->addLine('ERROR',"FUNCION: 'deleteGrupos' " .  $mysqli->error.' CONSULTA: '.$SQL);
		   $mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
	       return (false);
	     }

		 $mysqli->real_query("COMMIT");	//LA TRANSACCION FUE EXITOSA=>PERSISTO LOS CAMBIOS
		 $mysqli->close();
	     return (true);
    }
    /**
     * Elimina la configuracion por defecto segun el id
     * @param $id
     * @return boolean
     */
    function deleteConfigDefault($id){
    	global $LOGGER;
    	 $mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
	     if (mysqli_connect_errno()){
	     	$LOGGER->addLine('ERROR',"FUNCION: 'deleteConfigDefault' " .  mysqli_connect_error() );
	       	return (false);
	     }
	     $SQL = "";
		 if (($id!=null)and($id!='')){
		 	$SQL = "DELETE FROM config_default WHERE ORDER_ID = $id";
		 }
		 $mysqli->store_result();
		 $mysqli->real_query("BEGIN"); //INICIALIZO LA TRANSACCION
	     if (!$mysqli->real_query($SQL)){
	     	$LOGGER->addLine('ERROR',"FUNCION: 'deleteConfigDefault' " .  $mysqli->error.' CONSULTA: '.$SQL);
		   	$mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
	       	return (false);
	     }
		 $mysqli->real_query("COMMIT");	//LA TRANSACCION FUE EXITOSA=>PERSISTO LOS CAMBIOS
		 $mysqli->close();
	     return (true);
    }
    /**
     * Elimina el aliasPhone segun el id
     * @param $id
     * @return boolean
     */
    function deleteAliasPhone($idAliasPhone){
    	global $LOGGER;
    	 $mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
	     if (mysqli_connect_errno()){
	     	$LOGGER->addLine('ERROR',"FUNCION: 'deleteAliasPhone' " .  mysqli_connect_error() );
	       	return (false);
	     }
		 if (($idAliasPhone!=null)and($idAliasPhone!='')){
		 	$SQL = "DELETE FROM aliasesphone WHERE id = $idAliasPhone";
		 }
		 $mysqli->store_result();
		 $mysqli->real_query("BEGIN"); //INICIALIZO LA TRANSACCION
	     if (!$mysqli->real_query($SQL)){
	     	$LOGGER->addLine('ERROR',"FUNCION: 'deleteAliasPhone' " .  $mysqli->error.' CONSULTA: '.$SQL);
		   	$mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
	       	return (false);
	     }
		 $mysqli->real_query("COMMIT");	//LA TRANSACCION FUE EXITOSA=>PERSISTO LOS CAMBIOS
		 $mysqli->close();
	     return (true);
    }

	function guardarConfCantidadMapa($mapasId,$cuentaId,$objetivo){
		global $LOGGER;
	    $mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
	    if (mysqli_connect_errno()){
	    	$LOGGER->addLine('ERROR',"FUNCION: 'guardarConfCantidadMapa' " .  mysqli_connect_error() );
	       	return (false);
	    }
		$mysqli->real_query("BEGIN"); //INICIALIZO LA TRANSACCION
		$mysqli->store_result();
	    $SQLDel = "DELETE FROM `mapas_visibles_usuarios` WHERE `cuentaId`=$cuentaId AND `objetivo`= $objetivo";
		if (!$mysqli->real_query($SQLDel)){
			$LOGGER->addLine('ERROR',"FUNCION: 'guardarConfCantidadMapa' " .  $mysqli->error.' CONSULTA: '.$SQLDel);
		   	$mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
	       	return (false);
	    }
	    $vMapas=array();
	    $pos = strpos($mapasId,",");
	    if($pos === false){
	    	$vMapas[] = $mapasId;
	    } else {
	    	$vMapas = explode(",",$mapasId);
	    }
	    $SQL = "INSERT INTO `mapas_visibles_usuarios` (`mapaId`,`cuentaId`,`objetivo`) VALUES ";
	    $coma = "";
		foreach($vMapas as $mapa){
	    	if($mapa!=""){
		     	$SQL.= "$coma($mapa,$cuentaId,$objetivo)";
		     	$coma = ",";
	    	}
		}
		$mysqli->store_result();
	    if (!$mysqli->real_query($SQL)){
	       $LOGGER->addLine('ERROR',"FUNCION: 'guardarConfCantidadMapa' " .  $mysqli->error.' CONSULTA: '.$SQL);
		   $mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
	       return (false);
	    }
	    $mysqli->real_query("COMMIT");	//LA TRANSACCION FUE EXITOSA=>PERSISTO LOS CAMBIOS
		$mysqli->close();
	    return (true);
	}
    /**
     * Guarda la configuracion de los vehiculos de un mapa
     */
    function guardarConfMapa($mapaId, $cuentaId, $objetivo, $listaVehiculos, $listaFijos, $listaPuntos, $listaZonas, $monitoreados, $seleccion, $seguimiento, $fijosMonitoreados){
		global $LOGGER;
    	$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
	    if (mysqli_connect_errno()){
	    	$LOGGER->addLine('ERROR',"FUNCION: 'guardarConfMapa' " .  mysqli_connect_error() );
	       	return (false);
	    }
		$mysqli->real_query("BEGIN"); //INICIALIZO LA TRANSACCION
		$mysqli->store_result();
	    $SQLDel = "DELETE FROM `mapa_vehiculos` WHERE `mapaId`=$mapaId AND `cuentaId`=$cuentaId AND `objetivo`= $objetivo";
		if (!$mysqli->real_query($SQLDel)){
			$LOGGER->addLine('ERROR',"FUNCION: 'guardarConfMapa' " . $mysqli->error.' CONSULTA: '.$SQLDel);
		   	$mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
	       	return (false);
	    }
		$mysqli->store_result();
	    $SQLDel = "DELETE FROM `mapa_fijos` WHERE `mapaId`=$mapaId AND `cuentaId`=$cuentaId AND `objetivo`= $objetivo";
		if (!$mysqli->real_query($SQLDel)){
			$LOGGER->addLine('ERROR',"FUNCION: 'guardarConfMapa' " .$mysqli->error.' CONSULTA: '.$SQLDel);
		   	$mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
	       	return (false);
	    }
		$mysqli->store_result();
	    $SQLDel = "DELETE FROM `mapa_puntos` WHERE `mapaId`=$mapaId AND `cuentaId`=$cuentaId AND `objetivo`= $objetivo";
		if (!$mysqli->real_query($SQLDel)){
			$LOGGER->addLine('ERROR',"FUNCION: 'guardarConfMapa' " .$mysqli->error.' CONSULTA: '.$SQLDel);
		   	$mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
	       	return (false);
	    }
		$mysqli->store_result();
	    $SQLDel = "DELETE FROM `mapa_zonas` WHERE `mapaId`=$mapaId AND `cuentaId`=$cuentaId AND `objetivo`= $objetivo";
		if (!$mysqli->real_query($SQLDel)){
			$LOGGER->addLine('ERROR',"FUNCION: 'guardarConfMapa' " . $mysqli->error.' CONSULTA: '.$SQLDel);
		   	$mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
	       	return (false);
	    }
	    //vehiculos//
	    $vMonitoreados=array();
	    if($monitoreados){
	    	$vMonitoreados = explode(",",$monitoreados);
	    }
	    if($listaVehiculos!=""){
		    $lista = explode(",",$listaVehiculos);
	  	 	$SQL 	= "INSERT INTO `mapa_vehiculos` (`mapaId`,`cuentaId`,`objetivo`,`movilId`,`monitorear`,`seleccion`,`seguimiento`) VALUES ";
	  	 	$coma 	= "";
		    foreach($lista as $movil){
		    	if($movil!=""){
			    	$monitoreado = 0;
			    	$sel = 0;
			    	$seg = 0;
			    	if(in_array($movil,$vMonitoreados)){
			    		$monitoreado = 1;
			    	}
			    	if($movil==$seleccion){
			    		$sel = 1;
			    	}
			    	if($movil==$seguimiento){
			    		$seg = 1;
			    	}
			     	$SQL.= "$coma($mapaId,$cuentaId,$objetivo,$movil,$monitoreado,$sel,$seg)";
			     	$coma = ",";
		    	}
		    }
			$mysqli->store_result();
			//echo $SQL."\n";
		    if (!$mysqli->real_query($SQL)){
		       $LOGGER->addLine('ERROR',"FUNCION: 'guardarConfMapa' " . $mysqli->error.' CONSULTA: '.$SQL);
			   $mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
		       return (false);
		    }
	    }
	    //fijos//
	    if($listaFijos!=""){
	        $vFijosMonitoreados=array();
		    if($fijosMonitoreados){
		    	$vFijosMonitoreados = explode(",",$fijosMonitoreados);
		    }
		    $listaFijo = explode(",",$listaFijos);

	  	 	$SQL 	= "INSERT INTO `mapa_fijos` (`mapaId`,`cuentaId`,`objetivo`,`fijoId`, `monitorear`) VALUES ";
	  	 	$coma 	= "";
		    foreach($listaFijo as $fijo){
			    if($fijo!=""){
		    		$fijoMonitoreado = 0;
			   		if(in_array($fijo,$vFijosMonitoreados)){
			    		$fijoMonitoreado = 1;
			    	}
			     	$SQL.= "$coma($mapaId,$cuentaId,$objetivo,$fijo,$fijoMonitoreado)";
			     	$coma = ",";
			    }
		    }
			$mysqli->store_result();
			//echo $SQL."\n";
		    if (!$mysqli->real_query($SQL)){
		       $LOGGER->addLine('ERROR',"FUNCION: 'guardarConfMapa' " . $mysqli->error.' CONSULTA: '.$SQL);
			   $mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
		       return (false);
		    }
	    }
	    //puntos//
	    if($listaPuntos!=""){
		    $listaPunto = explode(",",$listaPuntos);
	  	 	$SQL 	= "INSERT INTO `mapa_puntos` (`mapaId`,`cuentaId`,`objetivo`,`puntoId`) VALUES ";
	  	 	$coma 	= "";
		    foreach($listaPunto as $punto){
		     	$SQL.= "$coma($mapaId,$cuentaId,$objetivo,$punto)";
		     	$coma = ",";
		    }
			$mysqli->store_result();
		    if (!$mysqli->real_query($SQL)){
		       $LOGGER->addLine('ERROR',"FUNCION: 'guardarConfMapa' " . $mysqli->error.' CONSULTA: '.$SQL);
			   $mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
		       return (false);
		    }
	    }
	    //zonas//
	    if($listaZonas!=""){
		    $listaZona = explode(",",$listaZonas);
	  	 	$SQL 	= "INSERT INTO `mapa_zonas` (`mapaId`,`cuentaId`,`objetivo`,`zonaId`) VALUES ";
	  	 	$coma 	= "";
		    foreach($listaZona as $zona){
		     	$SQL.= "$coma($mapaId,$cuentaId,$objetivo,$zona)";
		     	$coma = ",";
		    }
			$mysqli->store_result();
		    if (!$mysqli->real_query($SQL)){
		       $LOGGER->addLine('ERROR',"FUNCION: 'guardarConfMapa' " . $mysqli->error.' CONSULTA: '.$SQL);
			   $mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
		       return (false);
		    }
	    }
		$mysqli->real_query("COMMIT");	//LA TRANSACCION FUE EXITOSA=>PERSISTO LOS CAMBIOS
		$mysqli->close();
	    return (true);
    }

    function getConfMapaByMap($mapaId,$cuentaId,$objetivo){
    	global $LOGGER;
    	$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
	    if (mysqli_connect_errno()){
	    	$LOGGER->addLine('ERROR',"FUNCION: 'getConfMapaByMap' " .  mysqli_connect_error() );
	       return (false);
	    }
   		$SQL  = "select mv.mapaId as Mapa, mv.cuentaId as Cuenta, mv.objetivo as Obj, mv.movilId as Id, 1 as Tipo,mv.monitorear as Monitoreado,mv.seleccion as Seleccion, mv.seguimiento as Seguimiento
			from mapa_vehiculos as mv
			join abmacodigos abma on mv.movilId = abma.`ORDER_ID`
			where mv.mapaId=$mapaId and mv.cuentaId=$cuentaId and mv.objetivo=$objetivo
			AND (abma.LOCKSTAT<>1 OR ( (abma.LOCKDATE is null) OR (NOW() < abma.LOCKDATE) ) )
			union
			select mf.mapaId as Movil, mf.cuentaId as Cuenta, mf.objetivo as Obj, mf.fijoId as Id, 2 as Tipo, mf.monitorear as Monitoreado,0 as Seleccion, 0 as Seguimiento
			from mapa_fijos as mf
			join abmacodigos abma on mf.fijoId = abma.`ORDER_ID`
			where mf.mapaId=$mapaId and mf.cuentaId=$cuentaId and mf.objetivo=$objetivo
			AND (abma.LOCKSTAT<>1 OR ( (abma.LOCKDATE is null) OR (NOW() < abma.LOCKDATE) ) )
			union
			select mp.mapaId as Movil, mp.cuentaId as Cuenta, mp.objetivo as Obj, mp.puntoId as Id, 3 as Tipo, 0 as Monitoreado,0 as Seleccion, 0 as Seguimiento
			from mapa_puntos as mp
			where mp.mapaId=$mapaId and mp.cuentaId=$cuentaId and mp.objetivo=$objetivo
			union
			select mz.mapaId as Movil, mz.cuentaId as Cuenta, mz.objetivo as Obj, mz.zonaId as Id, 4 as Tipo,0 as Monitoreado,0 as Seleccion, 0 as Seguimiento
			from mapa_zonas as mz
			where mz.mapaId=$mapaId and mz.cuentaId=$cuentaId and mz.objetivo=$objetivo";
     	if (!$mysqli->real_query($SQL)) {
     		$LOGGER->addLine('ERROR',"FUNCION: 'getConfMapaByMap' " . $mysqli->error.' CONSULTA: '.$SQL);
       		return false;
     	}
    	$resultado = cConfiguracion::getResultado($mysqli);
     	$mysqli->close();
	    return $resultado;
    }
    function getConfCantidadMapas($cuentaId,$objetivo){
		global $LOGGER;
    	$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
	    if (mysqli_connect_errno()){
	    	$LOGGER->addLine('ERROR',"FUNCION: 'getConfCantidadMapas' " .  mysqli_connect_error() );
	      	return (false);
	    }
   		$SQL  = "select mvu.mapaId as Mapa, mvu.cuentaId as Cuenta, mvu.objetivo as Obj
			from mapas_visibles_usuarios as mvu
			where mvu.cuentaId=$cuentaId and mvu.objetivo=$objetivo";

     	if (!$mysqli->real_query($SQL)) {
     		$LOGGER->addLine('ERROR',"FUNCION: 'getConfCantidadMapas' " . $mysqli->error.' CONSULTA: '.$SQL);
       		return false;
     	}
    	$resultado = cConfiguracion::getResultado($mysqli);
     	$mysqli->close();
	    return $resultado;
    }

    function saveReportes($cuentaId,$objetivo,$moviles,$tipoEvento,$ultimos,$tipoReporte,$reporteId,$descripcion,$estadoEvento,$tiempoDetenido){
    	global $LOGGER;
    	$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
	    if (mysqli_connect_errno()){
	    	$LOGGER->addLine('ERROR',"FUNCION: 'saveReportes' " .  mysqli_connect_error() );
	       	return (false);
	    }
	    $mysqli->real_query("BEGIN");
	    if($tiempoDetenido==""){
	    	$tiempoDetenido = 'null';
	    }
	    if($estadoEvento==""){
	    	$estadoEvento = 'null';
	    }
	    if($descripcion==""){
	    	$descripcion = 'null';
	    }
	    if($ultimos==""){
	    	$ultimos = 'null';
	    }
	    if($tipoEvento==""){
	    	$tipoEvento = 'null';
	    }
	    if($reporteId!=""){
	    	$SQL  = "UPDATE mis_reportes set descripcion = '$descripcion', movilesId = '$moviles', tipoEvento = $tipoEvento,
	    			ultimos = $ultimos, tipoReporte = $tipoReporte,fecha=now(), estadoEvento = $estadoEvento, tiempoDetenido = $tiempoDetenido
	    			WHERE id=$reporteId and cuentaId = $cuentaId and objetivo=$objetivo ";
	    }else{
   			$SQL  = "INSERT INTO mis_reportes (id,descripcion,cuentaId,objetivo,movilesId,tipoEvento,ultimos,tipoReporte,fecha,estadoEvento,tiempoDetenido)
   					VALUES (null,'$descripcion',$cuentaId,$objetivo,'$moviles',$tipoEvento,$ultimos,$tipoReporte,now(),$estadoEvento,$tiempoDetenido)";
	    }
	    if (!$mysqli->real_query($SQL)){
	       $LOGGER->addLine('ERROR',"FUNCION: 'saveReportes' " . $mysqli->error.' CONSULTA: '.$SQL);
		   $mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
	       return (false);
	    }
	    $mysqli->real_query("COMMIT");//confirmo
     	$mysqli->close();
	    return true;
    }
     function deleteReporte($id,$cuentaId,$objetivo){
     	global $LOGGER;
     	$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
	    if (mysqli_connect_errno()){
	    	$LOGGER->addLine('ERROR',"FUNCION: 'deleteReporte' " .  mysqli_connect_error() );
	       return (false);
	    }
   		$SQL  = "DELETE FROM mis_reportes where id=$id and cuentaId = $cuentaId and objetivo=$objetivo ";

	    if (!$mysqli->real_query($SQL)){
	       $LOGGER->addLine('ERROR',"FUNCION: 'deleteReporte' " .  $mysqli->error.' CONSULTA: '.$SQL);
		   $mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
	       return (false);
	    }
     	$mysqli->close();
	    return true;
     }
	function getReporteById($reporteId){
		global $LOGGER;
     	$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
	    if (mysqli_connect_errno()){
	    	$LOGGER->addLine('ERROR',"FUNCION: 'getReporteById' " .  mysqli_connect_error() );
	       	return (false);
	    }
   		$SQL  = "SELECT * FROM mis_reportes where id = $reporteId";

	    if (!$mysqli->real_query($SQL)){
	       $LOGGER->addLine('ERROR',"FUNCION: 'getReporteById' " .$mysqli->error.' CONSULTA: '.$SQL);
		   $mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
	       return (false);
	    }
     	$resultado = cConfiguracion::getResultado($mysqli);
	    return $resultado;
     }

     function getReportes($cuentaId,$objetivo,$reporteId,$tipoReporte,$onlyConfig){
     	global $LOGGER;
     	$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
	    if (mysqli_connect_errno()){
	    	$LOGGER->addLine('ERROR',"FUNCION: 'getReportes' " .  mysqli_connect_error() );
	       	return (false);
	    }
	    $WHERE = "";
	    if($onlyConfig){
	    	$WHERE .= " and conf_periodo is not null";
	    }
	    if($reporteId != ""){
	    	$WHERE .= " and id = $reporteId";
	    }
	    if($tipoReporte != ""){
		    $cantTipoReporte = explode(",",$tipoReporte);
		    $cantTipoReporte = count($cantTipoReporte);
		    if($cantTipoReporte == 1){
		    	$WHERE .= " and tipoReporte = $tipoReporte ";
		    }else{
		    	$WHERE .= " and tipoReporte IN($tipoReporte) ";
		    }
	    }
   		$SQL  = "SELECT * FROM mis_reportes where cuentaId = $cuentaId and objetivo=$objetivo  $WHERE order by fecha desc";

	    if (!$mysqli->real_query($SQL)){
	       $LOGGER->addLine('ERROR',"FUNCION: 'getReportes' " .  $mysqli->error.' CONSULTA: '.$SQL);
		   $mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
	       return (false);
	    }
     	$resultado = cConfiguracion::getResultado($mysqli);
	    return $resultado;
     }

     function saveConfiguracionReporte($cuentaId,$objetivo,$tipoReporte,$reporteId,$periodo,$hora,$columnasDin,$cantidadDias,
     			$nombreReporte,$configDetalle,$configExportacion,$excesoVelocidad,$verComentarios,$movilesId,$estadoEventos,
     			$tiempoDetenido,$ultimos,$tipoEvento,$labelCuenta){
		global $LOGGER;
     	$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
	    if (mysqli_connect_errno()){
	    	$LOGGER->addLine('ERROR',"FUNCION: 'saveConfiguracionReporte' " .  mysqli_connect_error() );
	       	return (false);
	    }

   		if($periodo != ""){
   			$periodoAct = "conf_periodo = '$periodo' ";
   		}else{
   			$periodoAct = "conf_periodo = null ";
   		}
   		if($hora==""){
   			$horaSET=  " conf_hora = null ";
   		}else{
   			$horaSET=  " conf_hora = '$hora' ";
   		}
   		if($columnasDin!=""){
   			$columnasDinSET = "columnas_din = '$columnasDin' ";
   		}else{
   			$columnasDinSET = "columnas_din = null ";
   		}
   		if($cantidadDias!=""){
   			$cantDiasSET = " cantidad_dias = $cantidadDias ";
   		}else{
   			$cantDiasSET = " cantidad_dias = null ";
   		}
   		$nombreReporteSET = "";
   		if($nombreReporte!=""){
   			$nombreReporteSET = " ,descripcion = '$nombreReporte' ";
   		}else{
   			$nombreReporteSET = " ,descripcion = null ";
   		}
   		$configDetalleSET = "";
   		if($configDetalle!=""){
   			$configDetalleSET = " ,detalleReporte = $configDetalle ";
   		}else{
   			$configDetalleSET = " ,detalleReporte = null ";
   		}
   		$configExportacionSET = "";
   		if($configExportacion!=""){
   			$configExportacionSET = " ,exportacion = $configExportacion ";
   		}else{
   			$configExportacionSET = " ,exportacion = null ";
   		}
   		if($excesoVelocidad!=""){
   			$excesoVelocidadSET = " ,excesoVelocidad = $excesoVelocidad ";
   		}else{
   			$excesoVelocidadSET = " ,excesoVelocidad = null ";
   		}
   		if($verComentarios!==""){
   			$comentariosEventosSET = " ,comentariosEventos = $verComentarios ";
   		}else{
   			$comentariosEventosSET = " ,comentariosEventos = null ";
   		}
   		if($estadoEventos!==""){
   			$estadoEventoSET = " ,estadoEvento = $estadoEventos ";
   		}else{
   			$estadoEventoSET = " ,estadoEvento = null ";
   		}

   		if($tiempoDetenido!==""){
   			$tiempoDetenidoSET = " ,tiempoDetenido = $tiempoDetenido ";
   		}else{
   			$tiempoDetenidoSET = " ,tiempoDetenido = null ";
   		}
   		if($ultimos!==""){
   			$ultimosSET = " ,ultimos = $ultimos ";
   		}else{
   			$ultimosSET = " ,ultimos = null ";
   		}
   		if($tipoEvento!==""){
   			$tipoEventoSET = " ,tipoEvento = $tipoEvento ";
   		}else{
   			$tipoEventoSET = " ,tipoEvento = null ";
   		}
   		if($labelCuenta!==""){
   			$labelCuentaSET = " ,labelCuenta = '$labelCuenta' ";
   		}else{
   			$labelCuentaSET = " ,labelCuenta = null ";
   		}

     	if($reporteId==""){
   			$SQL = "INSERT mis_reportes set cuentaId = $cuentaId, objetivo=$objetivo, movilesId ='$movilesId',fecha=now(),
   					tipoReporte=$tipoReporte, $periodoAct, $horaSET, $columnasDinSET, $cantDiasSET $nombreReporteSET $configExportacionSET
   					$configDetalleSET $tipoEventoSET $excesoVelocidadSET $comentariosEventosSET $estadoEventoSET $tiempoDetenidoSET
   					$ultimosSET $labelCuentaSET";
   		}else{
    		$SQL = "UPDATE mis_reportes set  movilesId ='$movilesId',
    				$periodoAct, $horaSET, $columnasDinSET, $cantDiasSET $nombreReporteSET $configExportacionSET $configDetalleSET
    				$excesoVelocidadSET $comentariosEventosSET $estadoEventoSET $tiempoDetenidoSET $ultimosSET $tipoEventoSET
    				$labelCuentaSET
    			WHERE id=$reporteId and cuentaId = $cuentaId and objetivo=$objetivo ";
   		}
	    if (!$mysqli->real_query($SQL)){
	       $LOGGER->addLine('ERROR',"FUNCION: 'saveConfiguracionReporte' " . $mysqli->error.' CONSULTA: '.$SQL);
		   $mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
	       return (false);
	    }
     	$mysqli->close();
	    return true;
     }

	function getTipsConfig(){
		global $LOGGER;
		$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
	    if (mysqli_connect_errno()){
	    	$LOGGER->addLine('ERROR',"FUNCION: 'getTipsConfig' " .  mysqli_connect_error() );
	       	return (false);
	    }
   		$SQL  = "SELECT * FROM tips_config";

	    if (!$mysqli->real_query($SQL)){
	       $LOGGER->addLine('ERROR',"FUNCION: 'getTipsConfig' " . $mysqli->error.' CONSULTA: '.$SQL);
		   $mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
	       return (false);
	    }
     	$resultado = cConfiguracion::getResultado($mysqli);
	    return $resultado;
	}
	function getTips(){
		global $LOGGER;
		$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
	    if (mysqli_connect_errno()){
	    	$LOGGER->addLine('ERROR',"FUNCION: 'getTips' " .  mysqli_connect_error() );
	       	return (false);
	    }
   		$SQL  = "SELECT * FROM tips WHERE activo = 1";

	    if (!$mysqli->real_query($SQL)){
	      $LOGGER->addLine('ERROR',"FUNCION: 'getTips' " . $mysqli->error.' CONSULTA: '.$SQL);
		   $mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
	       return (false);
	    }
     	$resultado = cConfiguracion::getResultado($mysqli);
	    return $resultado;
	}
	function getColumnasDinamicas(){
		global $LOGGER;
		$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
	    if (mysqli_connect_errno()){
	    	$LOGGER->addLine('ERROR',"FUNCION: 'getColumnasDinamicas' " .  mysqli_connect_error() );
	       	return (false);
	    }
   		$SQL  = "SELECT * FROM reportes_columnas_din order by id asc";

	    if (!$mysqli->real_query($SQL)){
	       $LOGGER->addLine('ERROR',"FUNCION: 'getColumnasDinamicas' " .  $mysqli->error.' CONSULTA: '.$SQL);
		   $mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
	       return (false);
	    }
     	$resultado = cConfiguracion::getResultado($mysqli);
	    return $resultado;
	}
	
	function saveMailEventMovil($movil, $mailEventoMovil){
		global $LOGGER;
		$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
	    if (mysqli_connect_errno()){
	    	$LOGGER->addLine('ERROR',"FUNCION: 'saveMailEventMovil' " .  mysqli_connect_error() );
	       	return (false);
	    }
   		$SQL  = "UPDATE abmacodigos set ALERTA_MAIL_EVENTOS = '$mailEventoMovil'
    			WHERE ORDER_ID IN ($movil)";

	    if (!$mysqli->real_query($SQL)){
	       $LOGGER->addLine('ERROR',"FUNCION: 'saveMailEventMovil' " . $mysqli->error.' CONSULTA: '.$SQL);
		   $mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
	       return (false);
	    }
     	$resultado = cConfiguracion::getResultado($mysqli);
	    return $resultado;
	}
	function getMailsEventoMovil($movil){
		global $LOGGER;
		$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
	    if (mysqli_connect_errno()){
	    	$LOGGER->addLine('ERROR',"FUNCION: 'getMailsEventoMovil' " .  mysqli_connect_error() );
	       	return (false);
	    }
   		$SQL  = "SELECT ALERTA_MAIL_EVENTOS FROM abmacodigos WHERE ORDER_ID = $movil";

	    if (!$mysqli->real_query($SQL)){
	       $LOGGER->addLine('ERROR',"FUNCION: 'getMailsEventoMovil' " . $mysqli->error.' CONSULTA: '.$SQL);
		   $mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
	       return (false);
	    }
     	$resultado = cConfiguracion::getResultado($mysqli);
	    return $resultado;
	}
	
	function verficarAlias($alias){
		global $LOGGER;
		$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
	    if (mysqli_connect_errno()){
	    	$LOGGER->addLine('ERROR',"FUNCION: 'verficarAlias' " .  mysqli_connect_error() );
	       	return (false);
	    }
  		
	    $SQL = "SELECT a.id FROM aliases a WHERE a.alias = '". $alias. "' ";

	    if (!$mysqli->real_query($SQL)){
	       $LOGGER->addLine('ERROR',"FUNCION: 'verficarAlias' " .  $mysqli->error.' CONSULTA: '.$SQL);
		   $mysqli->real_query("ROLLBACK");//DESHAGO LOS CAMBIOS
	       return (false);
	    }
     	$resultado = cConfiguracion::getResultado($mysqli);
     	if($resultado->cantidad()>0){
     		return  $resultado->campo("id",0);
     	}else{
     		return false;
     	}
	}
 	/**
     * Devuelve la cantidad de cuentas pro en el sistema
     */
    function cantidadCuentasPro(){
    	global $LOGGER;
    	$mysqli = new mysqli(HOST, USER, PASSWORD, DB, PORT);
        if (mysqli_connect_errno()){
        	$LOGGER->addLine('ERROR',"FUNCION: 'cantCuentasPro' " . mysqli_connect_error());
           	printf("Conexion fallida: %s\n", mysqli_connect_error());
           	exit();
        }
    	$SQL = "select a.id, 4 as objetivo , a.`esFlota` as objetivoDB
				from aliases a 
				left join dealer d on a.`cuentaFk` = d.`id`
				left join abmacodigos abma ON a.`cuentaFk` = abma.`ORDER_ID`
				left join tlmapersonas tlma ON a.`cuentaFk` = tlma.`ORDER_ID`
				where a.habilitado = 1 AND (a.`permisoMonitor`= 1 OR a.`permisoVerLogistica` = 1) AND (
				      (d.`habilitado` = 1  AND a.`esFlota`=5) OR 
				      (abma.`CLIENTE_PRO`=1 AND (a.`esFlota`=2 OR a.`esFlota`=1)) OR
				      (tlma.`CLIENTE_PRO`=1 AND a.`esFlota`=3 AND tlma.ES_FLOTA = true)
				      )
				UNION
				select de.id,5 as objetivo, 5 as objetivoDB
				from dealer de
				WHERE de.habilitado = 1
				UNION
				select abma.`ORDER_ID`, abma.`OBJETIVO` as objetivo, abma.`OBJETIVO` as objetivoDB
				from abmacodigos abma
				WHERE abma.`CLIENTE_PRO` = 1 
				UNION
				select tlma.`ORDER_ID`, 3 as objetivo, 3 as objetivoDB
				from `tlmapersonas` tlma
				WHERE tlma.`CLIENTE_PRO` = 1 and tlma.ES_FLOTA = true";
    	if (!$mysqli->real_query($SQL)) {
           $LOGGER->addLine('ERROR',"FUNCION: 'cantCuentasPro' " . $mysqli->error.' CONSULTA: '.$SQL);
           exit();
        }
        $res =  cConfiguracion::getResultado($mysqli);
        return $res;
    }
}

?>